在Apple的新Swift编程语言中,我遇到了以下内容:
" 在创建该类或结构的实例时,类和结构必须将其所有存储的属性设置为适当的初始值。存储的属性不能处于不确定状态。"
即使对于@lazy Stored Properties,上述规则是否也有效?
答案 0 :(得分:2)
不,你没有:
惰性存储属性是一个属性,其初始值在第一次使用之前不会计算...
您必须始终将惰性属性声明为变量(使用var 关键字),因为它的初始值可能直到之后才被检索 实例初始化完成...
当属性的初始值为时,延迟属性很有用 取决于外部因素,其值直到a之后才知道 实例的初始化已完成。
基本上意味着它没有值,并且在初始化后不需要立即。
答案 1 :(得分:2)
延迟属性必须具有初始化程序。
但是,通过将它们标记为@lazy,初始化程序的值仅在需要时计算。
class DataImporter{}
class DataManager {
@lazy var importer:DataImporter = DataImporter()
}
var dm = DataManager()
// do stuff with dm and other lines of code
// later if you reference dm.importer
dm.importer // <-- at this moment the call to DataImporter is made
答案 2 :(得分:1)
这样想:延迟存储的属性 do 有一个初始值,它还没有计算出来。
您描述的规则意味着对象必须自己确定初始值,在init
返回后无法指定,例如由工厂。对于惰性存储属性也是如此。