Swift懒惰使用self实例化

Swift懒惰使用self实例化,第1张

Swift懒惰使用self实例化

由于某种原因,如果惰性属性的初始值引用,则需要显式类型注释

self
。在swift-
evolution邮件列表中
提到了这一点,但是我无法解释 为什么 这样做是必要的。

lazy var first: FirstClass = FirstClass(second: self)// ^^^^^^^^^^^^

您的代码将按预期编译并运行。

这是另一个示例,它说明

struct
s 也发生了问题,即与子类无关。

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进行更新。)



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5651857.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存