【发布时间】:2015-02-02 19:40:41
【问题描述】:
这并不重要,也有一些变通方法,但令人困惑。
请参阅下面的最小示例。我指的是一个初始化的属性,但在调用 super.init() 之前。为什么下面指示的语句有编译错误?使用表达式右手和左手的属性有什么特别之处吗?
我浏览了 Swift 语言指南,但找不到任何相关内容。快速编译器在这里搞砸了,还是我缺少一些关于属性、自我和初始化的东西?或者在调用 super.init 之前 所有 对“myProperty”的引用是否有误?
(请注意,如果属性是常量(使用 'let')或属性是否为其他类型(如 Int)并不重要——同样的事情也会发生。)
class MyClass : NSObject {
var myProperty: Bool
override init() {
myProperty = true
if myProperty { /* this is ok */ }
if myProperty || true { /* this is ok */ }
if true || myProperty { /* this is NOT ok! ('self used before super.init') - WHY? */ }
super.init()
if true || myProperty { /* now this is ok */ }
}
}
【问题讨论】:
标签: swift properties initialization