当我们得到属性值的时候,会调用该属性的get方法。
当我们去设置属性值的时候,会调用该属性的set方法。
当我们给属性设置值的时候,Swift会自动给我们创建一个名为newValue的常量并且可以用于set{}中。
Swift中有储值属性和计算属性,一般我们应该是给计算属性添加get和set方法,现在先通过一个Example展示:
var A:Int = 0
var B:Int = 0
var C:Int {
get {
return 1
}
set {
print("Recived new value", newValue, " and stored into 'B' ")
B = newValue
}
}
//When we are getting a value of C it fires get{} part of C property
A = C
A //Now A = 1
//When we are setting a value to C it fires set{} part of C property
C = 2
B //Now B = 2
var c:Int = 0
var _num : Int = 2
var num : Int {
get{
return _num
} set (newValue) {
if newValue >= 2 {
_num = newValue
} else {
print("error: cannot have family with less than 2 members")
c = 0
_num = 0
}
}
}
下面这段代码是我自己写的,如果var a = num,那么会调用num的get方法,会返回_num,所以a的值为2
如果num = 5,调用set方法,newValue为5且大于2,因此此时_num的值为5
如果num = 1,调用set方法,走else分支,c = 0, _num = 0