【发布时间】:2018-03-22 11:11:07
【问题描述】:
假设我有这样的 A 和 B 类:
class A {
var x: Int { return 9 }
func p() { print(x) }
}
class B: A {
...
}
let v: A = B()
v.p()
然后我以三种不同的方式覆盖 B 中的 x:
class B: A {
// OPTION 1: FINE - prints 10
override var x: Int { return 10 }
// OPTION 2: ERROR - cannot override with a stored property 'x'
override var x = 10
// OPTION 3: FINE - prints 10
override lazy var x = 10
}
有人能解释一下用存储属性覆盖计算属性有什么问题吗?为什么当我声明它是惰性的时一切都突然修复了?
【问题讨论】:
标签: swift properties