我从来没有完全理解过init()是怎么回事.
有没有一个干净,简单的方法来实现我在下面的代码中try 做的事情?
编辑:我想避免重复data = value / 2
的逻辑,因为它可能比这个简单的例子复杂得多.我也不想为data
提供缺省值或使其成为可选的,因为我想要data
被初始化的编译时保证.
fileprivate struct Foo {
var data: Int
var twiceAsMuch: Int {
set(value) {
data = value / 2
}
get {
data * 2
}
}
init(twice: Int) {
// The following line won't compile because
// "Self used before all stored properties are initialized"
self.twiceAsMuch = twice
}
}