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