您的位置:首页 > 移动开发 > Swift

swift-计算型属性和存储型属性的区别

2016-08-01 22:46 211 查看
存储型属性:用于存储一个常量或者变量

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 方法
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: