我使用惰性var定义定义了一个类,其中EXIFData是一个结构:
struct EXIFData {
var a : String
var b : String
}
class xxx {
...
lazy var exif: EXIFData = {
...
return EXIFData(url: self.initUrl as CFURL)
}()
现在我想为某些成员分配一个值而不执行lazy var definition的初始代码。我怎样才能避免它并为自己创建的结构成员而不是像c.exif.a = newExif.a
那样?我使用的是Swift 3.0。
添加了: 我这样解决了:作为同一个类的一部分,我使用所需的信息在惰性初始化中分配我的值。所以只有一个额外的" if"声明。不需要外部过剩和特殊技巧来避免标准初始化。
答案 0 :(得分:3)
如果您只是在读取之前正常分配值,则惰性初始值设定项将不会运行。这是一个测试用例:
class Class {
lazy var lazyVar: String = {
print("Lazy initializer ran")
return "Default value"
}()
}
let object = Class()
object.lazyVar = "Custom value"
print(object.lazyVar)