我正在关注关闭闭包的Swift教程并遇到了这段代码。
class HTMLEelement {
let name: String
let text: String
lazy var asHTML: () -> String = {
[weak self] in
guard let this = self else { return "" }
return "<\(this.name)> \(this.text) </\(this.name)>"
}
init(name:String, text: String) {
self.name = name
self.text = text
}
deinit {
print("HTMLELEMENT \(name) is being deallocated")
}
}
他们为什么定义函数asHTML
,而不仅仅使用常规的public
方法?
答案 0 :(得分:1)
如果不将var声称为懒惰,则不能使用&#34; self&#34;在初始化期间。我认为这是在你的例子中使用懒惰的主要原因。