self。在swift-
evolution邮件列表中提到了这一点,但是我无法解释 为什么 这样做是必要的。
用
lazy var first: FirstClass = FirstClass(second: self)// ^^^^^^^^^^^^
您的代码将按预期编译并运行。
这是另一个示例,它说明
structs 也发生了问题,即与子类无关。
func foo(x: Int) -> Int { return x + 1 }struct MyClass { let x = 1 lazy var y = foo(0) // No compiler error lazy var z1 = foo(self.x) // error: use of unresolved identifier 'self' lazy var z2: Int = foo(self.x) // No compiler error}
的初始值
y不依赖
self且不需要类型注释。的初始值
z1/z2取决于
self,并且仅使用显式类型注释进行编译。
更新: 在Swift 4 / Xpre 9 beta
3中已修复此问题,惰性属性初始化程序现在可以引用实例成员
self,而无需显式和无显式类型注释。(感谢@hamish进行更新。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)