setter 和getter 的使用--> 适合计算使用

  1. struct Point {
  2. var x = 0.0, y=0.0
  3. }
  4.  
  5. struct Size {
  6. var width = 0.0, height = 0.0
  7.  
  8. }
  9.  
  10. struct Rect {
  11. var orgin = Point()
  12. var size = Size()
  13.  
  14. // lazy var 变量: 类型 = { 创建变量代码 }()
  15. // 懒加载的使用方法
  16. // lazy var center : Point = {
  17. // let x = self.orgin.x + self.size.width/2
  18. // let y = self.orgin.y + self.size.height/2
  19. //
  20. // return Point(x: x,y: y)
  21. // }()
  22.  
  23. mutating func getCenter()-> (Double,Double){
  24. let x = self.orgin.x + self.size.width/
  25. let y = self.orgin.y + self.size.height/
  26.  
  27. return (x,y)
  28. }
  29.  
  30. var center:Point {
  31. // setter 和getter 适合 计算属性
  32. get {
  33. let x = self.orgin.x + self.size.width/
  34. let y = self.orgin.y + self.size.height/
  35.  
  36. return Point(x :Double(x) , y : Double(y))
  37. }
  38.  
  39. set {
  40. orgin.x = newValue.x - size.width
  41. orgin.y = newValue.y - size.height
  42. }
  43.  
  44. }
  45. }

外部调用 及显示结果

  1. var rect = Rect(orgin:Point(x:,y:),size:Size(width:,height:))
  2.  
  3. print("rect 的数值 是\(rect)")
  4. print("rect 的 center 是 \(rect.getCenter())")
  5.  
  6. rect.center = Point (x:10.0,y:10.0)
  7.  
  8. print("rect 的 center 是 \(rect.center)")

结果

  1. rect 的数值 Rect(orgin: swift_003.Point(x: 100.0, y: 100.0), size: swift_003.Size(width: 100.0, height: 100.0))
  2. rect center (150.0, 150.0)
  3. rect center Point(x: -40.0, y: -40.0)

swift 第二课 基础知识-2的更多相关文章

  1. swift 第一课 基础知识-1

    1. 基本的打印: print("这是学习 swift 的第一课") var varA = print("a 的值是 \(varA)") //注:字符串打印参数 ...

  2. HTML第一课——基础知识普及【1】

    请关注公众号:自动化测试实战 HTML概念及编写规范 html叫做超本文标记语言,注意它知识标记语言,不是编程语言. 编写规范: 由标记(html, div, p, h1等)组成 标记成对出现(< ...

  3. HTML第一课——基础知识普及【2】

    关注公众号:自动化测试实战 img标签 我们先看一下文档结构: 这里我们文件当前位置就是lesson.html,所以现在我们img属性src给的值要进入imgs文件夹,所以我们可以用相对路径来表示,看 ...

  4. IOS之swift第一课基础代码

    import Foundation //import Foundation 导入模块,专业术语也是导入 包,库的 意思. var str = "Hello World" //声明一 ...

  5. Python学习第二节——基础知识

    # !/usr/bin/edv python    脚本语言的第一行,目的就是指出,你想要你的这个文件中的代码用什么可执行程序去运行它.# -*- coding:UTF-8 -*-    标明编码注释 ...

  6. Linux基础第一课——基础知识了解

    前言 发展历史 linus 林纳斯 赫尔辛基大学 在自己的笔记本上安上自己写的操作系统 基于Linux内核 Linux内核 也是基于unix内核开发出来 unix 不开源 只能军方和大学使用 Linu ...

  7. python第一课--基础知识

    python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的 ...

  8. Swift之基础知识

    Swift之基础知识 出于对Swift3.0的学习,写下这篇基本语法的笔记.希望能帮助记忆 -0- 这边提供Swift3.0中文教材,资源链接: https://pan.baidu.com/s/1c2 ...

  9. 学习javascript基础知识系列第二节 - this用法

    通过一段代码学习javascript基础知识系列 第二节 - this用法 this是面向对象语言中的一个重要概念,在JAVA,C#等大型语言中,this固定指向运行时的当前对象.但是在javascr ...

随机推荐

  1. ubuntu下编辑文本命令

    常见的基于控制台的文本编辑器有以下几种: emacs           综合性的GNU emacs 编辑环境 nano              一个类似于经典的pico的文本编辑器,内置了一个pi ...

  2. mysql对两个字段进行自定义排序

    Mysql order by 多字段排序 ') desc,ADD_DATE desc mysql单个字段降序排序: select * from table order by id desc; mysq ...

  3. .Net Core 过滤器

    请求: public class MyRequest { [Required(ErrorMessage = "Name参数不能为空")]//Required 验证这个参数不能为空 ...

  4. 【题解】[Noip2010]机器翻译-C++

    题目Description小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章.这个翻译软件的原理很简单,它只是从头到尾,依次将每个英文单词用对应的中文含义来替换.对于每个英文单词,软件 ...

  5. Java BIO、NIO、AIO 原理

    先来个例子理解一下概念,以银行取款为例: 同步 : 自己亲自出马持银行卡到银行取钱(使用同步IO时,Java自己处理IO读写). 异步 : 委托一小弟拿银行卡到银行取钱,然后给你(使用异步IO时,Ja ...

  6. Spring boot请求参数

    GET请求: 1.restful风格: @GetMapping("/order/detail") public BaseOutput omsQueryDetail(@Request ...

  7. CF796C Bank Hacking 细节

    思路十分简单,答案只有 3 种可能,但是有一些细节需要额外注意一下. code: #include <bits/stdc++.h> #define N 300002 #define set ...

  8. 「CF716D」Complete The Graph「最短路」

    题意 给定一个\(n\)个点\(m\)条边的无向图,有一些边权暂时为\(0\),你需要分配一个\([1, 10^{18}]\)的数.最终使得\(s\)到\(t\)最短路为\(L\),输出一个可行的分配 ...

  9. web软件测试基础系统测试简化理论

    系统测试点主要如下 1.系统测试基础-2.测试对象与测试级别-3.系统测试类型-4.系统测试方法-5.系统测试之软件测试质量. 1.系统测试:是尽可能彻底地检查出程序中的错误,提高软件系统的可靠性. ...

  10. MySQL数据分析-(2)数据库的底层逻辑

    (一) 数据库存在的逻辑 1.案例开篇-大部分公司对于数据和数字的管理都是低效率的 我们要学习数据库,就必须要搞清楚数据库是在什么样的情景下发明并流行的?学习新知识就要搞清楚每个知识点的来龙去脉,这样 ...