你能解释为什么会出现这种错误吗?最好能解决这个问题吗?
class A {
init(_ closure: @escaping () -> ()) {
print("")
}
}
class B {
var s: String?
lazy var a = A {
self.s = ""
}
}
error: use of unresolved identifier 'self'
self.s = ""
^~~~
答案 0 :(得分:1)
如果lazy属性的初始值引用self,则它需要显式类型注释。因此,您需要显式写入类型A
lazy var a:A = A {
self.s = ""
}
答案 1 :(得分:0)
正如 @Sahil 在他的回答中指出的那样,由于某些晦涩的原因,懒惰的存储属性需要类型注释,只要它依赖于self
。你的代码会变成:
class B {
var s: String?
lazy var a: A = A {
self.s = ""
}
}
使用A
的显式类型注释。