lazy var propertyOne: BabyYoda = BabyYoda(delegate: self.mandalorian)
vs。
lazy var propertyTwo: BabyYoda = {return BabyYoda(delegate: self.mandalorian)}()
一个比另一个更有效吗?他们会编译成完全相同的代码吗?我了解propertyTwo
允许添加其他代码行(例如,在BabyYoda
对象中设置其他内容),但这是我能想到的唯一区别。
第二种语法,我称之为“定义和调用”,是使用几行代码初始化实例属性的合法方法。
请注意,本质上,这些都与lazy
没有关系,这与您提出的特定问题无关。 lazy
实际上只是使在此实例属性初始化器中说self.mandalorian
合法的一种方式。这很有趣,但这是完全不同的事情。