虽然玩了一点Swift,我试着编写一个只读和懒惰的初始化属性。我很快就写了这行代码来了解它是不允许的。swift中的懒惰只读属性
// no valid Swift code.
lazy let foo : Int = { return 42 }()
您必须将惰性属性声明为var
。 雨燕书中明确指出,让懒是不可能的一个很好的理由:
“你必须声明一个懒惰的属性作为一个变量(使用var关键字),因为它的初始值可能不被检索直到实例初始化完成。恒属性必须总是有一个值前初始化完成,因此不能被声明为懒惰。”
假如我想在迅速只读懒财产。什么是最好的方式来存档?
私人二传手对我来说是足够的。我经常在C#中使用这种模式。 – MBulli 2014-09-26 13:52:13
我认为这相当于private(set)lazy var foo = 42'''。如果您将setter标记为private,则仅仅为了省略setter而声明getter是没有意义的。 – 2014-12-03 10:04:51
它不是一个getter,它是一个懒惰的实例化闭包,但它不是必需的,因为它不包含任何逻辑。这就是为什么'private(set)lazy var foo = 42'将以同样的方式工作的原因。 – Danchoys 2014-12-12 07:04:17