swift 计算型属性
来源:互联网 发布:最新网络玄幻小说 编辑:程序博客网 时间:2024/06/06 01:27
计算型的属性是通过类的其它属性赋值的过程自动赋值,先看一下代码
struct Size { var width = 0.0 var height = 0.0}struct Point { var x = 0.0 var y = 0.0}class Rectangle{ var origin = Point() var size = Size() var center: Point { let centerX = origin.x + size.width/2 let centerY = origin.y + size.height/2 return Point(x: centerX, y: centerY) }//计算型的属性 init( origin: Point , size: Size){ self.origin = origin; self.size = size }}
这里的center属性就是计算型的属性,这个属性通过矩形的x、y、width、height属性赋值后自动赋值
此时给center属性赋值会报错
因为此时center属性是只读的,此时要想赋值,需要重写center属性的Set方法
class Rectangle{ var origin = Point() var size = Size() var center: Point { get{ let centerX = origin.x + size.width/2 let centerY = origin.y + size.height/2 return Point(x: centerX, y: centerY) } set(newCenter){ origin.x = newCenter.x - size.width/2 origin.y = newCenter.y - size.height/2 } }//计算型的属性 init( origin: Point , size: Size){ self.origin = origin; self.size = size }}
此时赋值不会报错,并且会把x、y属性值进行修改
Set方法的优化写法,swift定义了好了newValue变量,可以重写Set方法,代码如下
class Rectangle{ var origin = Point() var size = Size() var center: Point { get{ let centerX = origin.x + size.width/2 let centerY = origin.y + size.height/2 return Point(x: centerX, y: centerY) } set{ origin.x = newValue.x - size.width/2 origin.y = newValue.y - size.height/2 } }//计算型的属性 init( origin: Point , size: Size){ self.origin = origin; self.size = size }}
苹果官方定义矩形——CGRect
//苹果官方var rect2 = CGRect(origin: CGPoint(x: 0,y: 0),size:CGSize(width: 10,height: 5))rect2.originrect2.size
阅读全文
1 1
- swift 计算型属性
- Swift计算属性
- Swift-计算属性
- swift中的计算属性
- swift-计算型属性和存储型属性的区别
- swift 关键字guard 计算属性
- 9.6 Swift只读计算属性
- swift 学习笔记(23)-属性(计算属性)
- Swift 存储属性和计算属性
- swift计算型属性与懒加载的对比
- 013--swift计算型属性和懒加载的区别
- swift 属性定义 存储属性、计算属性、类属性
- Swift 中的计算属性、懒存储属性、属性观察器
- 通俗地理解Swift语言计算属性
- Swift中的Lazy与计算属性
- Swift中的Lazy与计算属性
- Swift 系统学习 21 存储型属性和计算型属性 下标语法
- Swift基础语法-属性,存储属性,延迟存储属性,计算属性,属性观察器,类属性
- android文字及背景颜色渐变
- java运算符详解
- jsp页面读取property文件读取java类文件
- 图像工具包VintaSoftImaging.NET SDK发布v8.5,新增独立web服务
- 浅析TCP之SACK(选择性确认)
- swift 计算型属性
- Android Studio gradle配置详解
- 数组的连接、拼接、排序
- liblinear
- Drawable概念及对子类的互相转换,实现圆角图片,图片缩放等
- 微信小程序:新手跳坑指南
- Linux远程访问windows更改文件权限
- PHP 性能分析与实验
- SQlit