延迟var普通实例化和闭包实例化之间有什么区别?

问题描述 投票:0回答:1
lazy var propertyOne: BabyYoda = BabyYoda(delegate: self.mandalorian)

vs。

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

一个比另一个更有效吗?他们会编译成完全相同的代码吗?我了解propertyTwo允许添加其他代码行(例如,在BabyYoda对象中设置其他内容),但这是我能想到的唯一区别。

swift closures lazy-initialization
1个回答
1
投票

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

请注意,本质上,这些都与lazy没有关系,这与您提出的特定问题无关。 lazy实际上只是使在此实例属性初始化器中说self.mandalorian合法的一种方式。这很有趣,但这是完全不同的事情。

© www.soinside.com 2019 - 2024. All rights reserved.