懒惰的只读属性在swift

前端之家收集整理的这篇文章主要介绍了懒惰的只读属性在swift前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在与Swift玩一点时,我试图写一个只读和懒惰的初始化属性。我很快写了这行代码,只是为了了解这是不允许的。
// no valid Swift code.
lazy let foo : Int = { return 42 }()

你必须将惰性属性声明为var。
这本书清楚地表明,懒惰是不可能有一个很好的理由:

“You must always declare a lazy property as a variable (with the var keyword),because its initial value might not be retrieved until after instance initialization completes. Constant properties must always have a value before initialization completes,and therefore cannot be declared as lazy.”

假设我想要快速地拥有一个只读惰性的财产。什么是最好的存档方式?

如果在这种特定情况下readonly和private是同义词,那么可以通过明确声明它来使setter为private:
private(set) lazy var foo : Int = { return 42 }()

这是不可改变和懒惰之间的一个很好的妥协。

原文链接:https://www.f2er.com/swift/320356.html

猜你在找的Swift相关文章