lazy var propertyOne: BabyYoda = BabyYoda(delegate: self.mandalorian)
与。
lazy var propertyTwo: BabyYoda = {return BabyYoda(delegate: self.mandalorian)}()
一个比另一个更有效率吗?它们是否编译为完全相同的代码? 我知道propertyTwo
允许额外的代码行(例如,在BabyYoda
对象中设置其他东西(,但这是我能想到的唯一区别。
第二种语法,我称之为"定义和调用",是使用几行代码初始化实例属性的合法方法。
请注意,就其本身而言,这些都与lazy
无关,这与您提出的特定问题无关。lazy
实际上只是使在这种情况下说self.mandalorian
属性初始值设定项合法的一种方式。这很有趣,但这是完全不同的事情。