【发布时间】:2016-07-10 11:54:06
【问题描述】:
在下面的课程中
class Foo {
let _defaultValue = "N/A"
let value: String
init (dict: NSDictionary) {
self.value = dict["bar"] as? String! ?? _defaultValue
}
}
编译器失败并显示消息
constant 'self.value' captured by a closure before being initialized
据我所知,没有运算符读取 `self.value。该消息似乎有些混乱。
我不小心想出了一个解决方法。我应该说这让我更加困惑:
class Foo {
let value: String
init (dict: NSDictionary) {
let _defaultValue = "N/A"
self.value = dict["bar"] as? String! ?? _defaultValue
}
}
声明_defaultValue 并在构造函数中初始化它使代码编译。
如果有人能解释为什么在第一种情况下会发生错误以及在第二种情况下编译器更高兴的是什么,那将是一个巨大的帮助?
【问题讨论】: