在使用var / property之前,willSet didSet和get set之间有什么区别?
从我的观点来看,他们都可以为物业设定价值。 何时以及为什么要使用willSet / didSet和get / set?
我知道对于willSet和didSet的结构看起来像这样:
var variable1 : Int = 0 { didSet { println (variable1) } willSet(newValue) { .. } } var variable2: Int { get { return variable2 } set (newValue){ } }What is the difference between willSet - didSet, and get - set, when working with this inside a property?
From my point of view, both of them can set a value for a property. When, and why, should I use willSet - didSet, and when get - set?
I know that for willSet and didSet, the structure looks like this:
var variable1 : Int = 0 { didSet { println (variable1) } willSet(newValue) { .. } } var variable2: Int { get { return variable2 } set (newValue){ } }最满意答案
将在存储该值之前调用willSet 。 在存储新值后立即调用didSet 。何时以及为什么要使用willSet / didSet
考虑你的例子与输出:
var variable1 : Int = 0 { didSet{ println("didSet called") } willSet(newValue){ println("willSet called") } } println("we are going to add 3") variable1 = 3 println("we added 3")
输出:
we are going to add 3 willSet called didSet called we added 3它的作用就像前/后条件
另一方面,您可以使用get如果要添加例如只读属性:
var value : Int { get { return 34 } } println(value) value = 2 // error: cannot assign to a get-only property 'value'willSet is called just before the value is stored. didSet is called immediately after the new value is stored.When and why should I use willSet/didSet
Consider your example with outputs:
var variable1 : Int = 0 { didSet{ print("didSet called") } willSet(newValue){ print("willSet called") } } print("we are going to add 3") variable1 = 3 print("we added 3")
Output:
we are going to add 3 willSet called didSet called we added 3it works like pre/post -condition
On the other hand, you can use get if you want to add, for example, a read-only property:
var value : Int { get { return 34 } } print(value) value = 2 // error: cannot assign to a get-only property 'value'更多推荐
发布评论