首页 > 解决方案 > 惰性 var 正常实例化和闭包实例化有什么区别?

问题描述

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

对比

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

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

标签: swiftclosureslazy-initialization

解决方案


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

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


推荐阅读