在与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:
原文链接:https://www.f2er.com/swift/320356.htmlprivate(set) lazy var foo : Int = { return 42 }()
这是不可改变和懒惰之间的一个很好的妥协。