懒惰的实例化闭包与仅使用方法

时间:2018-03-29 22:16:20

标签: swift

我正在关注关闭闭包的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方法?

1 个答案:

答案 0 :(得分:1)

如果不将var声称为懒惰,则不能使用&#34; self&#34;在初始化期间。我认为这是在你的例子中使用懒惰的主要原因。