lazy var 正常实例化和闭包实例化有什么区别?

What is the difference between lazy var normal instantiation and closure instantiation?

lazy var propertyOne: BabyYoda = BabyYoda(delegate: self.mandalorian)

对比

lazy var propertyTwo: BabyYoda = {return BabyYoda(delegate: self.mandalorian)}()

一个比另一个更有效率吗?他们编译成完全相同的代码吗? 我知道 propertyTwo 允许额外的代码行(例如在 BabyYoda 对象中设置额外的东西),但这是我能想到的唯一区别。

第二种语法,我称之为“定义和调用”,是使用几行代码初始化实例的合法方法属性。

请注意,none 本身与 lazy 有任何关系,这与您提出的特定问题无关。 lazy 实际上只是一种使 self.mandalorian 在这种情况下 属性 初始值设定项合法化的方法。这很有趣,但这是完全不同的事情。