让我们一个计算的属性开始与代码片段:是什么让一个属性斯威夫特
St Foo {
var proA: Int = 0 { // needs initialization
willSet {
print("about to set proA to \(newValue) from \(proA)")
}
didSet {
print("already set proA to \(proA) from \(oldValue)")
}
}
var ProB: Int { // do not needs initialization
return 1
}
}
let foo = Foo()
foo.proA = 23
print(foo.ProB)
下面是我的一些有关的存储和计算的财产个人理解的:
一:物业只观察者(willSet和didSet)不是一个计算属性,而是一个存储属性(例如上面代码中的proA属性)。
b:计算属性不能有初始化(请参阅上面代码的注释)。
c:setter与属性观察者相同,属性观察者只是setter +观察者对之前和之后的变异。
问题:
我不知道是什么让一个属性计算的财产?只要属性有一个getter并返回它是一个计算属性,它是正确的吗?
2.我的所有理解(a,b & c)是否正确?如果不是的话,你会很高兴指出。
3.为什么不允许初始化计算属性? (请看下图)当我这样做编译器发出警告不能调用非函数类型的值“int”这个错误的含义是什么?
非常感谢。
是的关于“b”选项,你是对的我犯了一个错误,我的意思是“没有”。已经修复 – SLN
并看到,总是看到我的书:http://www.apeth.com/swiftBook/ch03.html#_computed_variables – matt
感谢您的参考,我现在就读它。我昨天在亚马逊预订了你的书。我正在等待正式发布。 – SLN