gpt4 book ai didi

swift - Swift 中的惰性只读属性

转载 作者:IT王子 更新时间:2023-10-29 05:10:02 26 4
gpt4 key购买 nike

在尝试使用 Swift 的过程中,我尝试编写一个只读且惰性初始化的属性。我很快写下了那行代码,只是为了了解这是不允许的。

// no valid Swift code.
lazy let foo : Int = { return 42 }()

您必须将惰性属性声明为 var。swift 书清楚地指出 let with lazy 是不可能的,这是有充分理由的:

“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.”

假设我想在 swift 中拥有一个只读惰性属性。存档的最佳方式是什么?

最佳答案

如果 readonly 和 private 在这种特定情况下对您来说是同义词,那么您可以通过显式声明将 setter 设为私有(private):

private(set) lazy var foo : Int = { return 42 }()

这是不变性和惰性之间的一个很好的折衷。

关于swift - Swift 中的惰性只读属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048138/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com