swift-计算型属性和存储型属性的区别
2016-08-01 22:46
211 查看
存储型属性:用于存储一个常量或者变量
// 用lazy 修饰的,是延迟加载,必须用 var 修饰
// 用 var 修饰的 name,可以在外界改变值,而用let 修
// 饰的属性age,外面不可以改变其值
**简单来说,存储型属性主要就是用来存储值的
计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化.
// get 用来取值
// set 用来赋值
class Person1 { var name: String = "lili" let age: Int = 10 lazy var p1:Person1 = Person1() }
// 用lazy 修饰的,是延迟加载,必须用 var 修饰
// 用 var 修饰的 name,可以在外界改变值,而用let 修
// 饰的属性age,外面不可以改变其值
**简单来说,存储型属性主要就是用来存储值的
计算型属性: 计算性属性不直接存储值,而是用 get / set 来取值 和 赋值,可以操作其他属性的变化.
// get 用来取值
// set 用来赋值
class Person2{ var weight: Int = 10 var height: Int = 5 // age 实现了get 和set 方法,可以在外面给这个属性赋值. var age: Int { get { return height * 3 } set(newValue){ // 或者直接用 newAge height = newValue * 5 } } //如果不实现set 方法,是不能给其赋值的,这种类型的属于只读计算属性.只读计算属性是可以省略get 的,直接返回即可.如 size 属性 var size: Int{ return height * 3 } //MARK: 计算属性死循环情况 /* 计算属性值是不固定的,不能用 let 修饰,只能用 var 计算型属性不能直接赋值 */ // 下面的 get 和 set 方法都会导致死循环 var name: String{ get { return name // 这里会调用 get 方法 } set { name = newValue // 这里调用 set 方法 } } }
相关文章推荐
- Swift 系统学习 21 存储型属性和计算型属性 下标语法
- Swift 中计算型属性 和 懒加载 的区别
- 013--swift计算型属性和懒加载的区别
- swift学习笔记--计算属性和存储属性的区别
- swift:运算型属性和存储型属性
- swift学习 -> 计算型属性(rendonly)、didSet、懒加载(lazy)
- swift:谈谈swift几种常见属性的区别
- Swift计算属性和存储属性的重要区别
- swift计算型属性与懒加载的对比
- swift 计算型属性
- 细说HTML元素的ID和Name属性的区别
- 细说HTML元素的ID和Name属性的区别
- C#中属性和字段的区别
- 边框(border)边距(margin)和间隙(padding)属性的区别
- 细说HTML元素的ID和Name属性的区别
- 细说HTML元素的ID和Name属性的区别[ZT]
- html中id和name属性的区别(转)
- html中title和alt属性的区别
- javascript HTML元素的ID和Name属性的区别
- 边框(border)边距(margin)和间隙(padding)属性的区别