加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

懒惰的只读属性在swift

发布时间:2020-12-14 05:51:24 所属栏目:百科 来源:网络整理
导读:在与Swift玩一点时,我试图写一个只读和懒惰的初始化属性。我很快写了这行代码,只是为了了解这是不允许的。 // no valid Swift code.lazy let foo : Int = { return 42 }() 你必须将惰性属性声明为var。 这本书清楚地表明,懒惰是不可能有一个很好的理由:
在与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 }()

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读