lazy var asHTML: () -> String = {
if let text = self.text {
return "<(self.samplename)>(text)</(self.samplename)>"
} else {
return "<(self.samplename) />"
}
}
init(samplename: String, text: String? = nil) {
self.samplename = samplename
self.text = text
}
deinit {
println("(samplename) is being deinitialized")
}
}
var paragraph: HTMLElement? = HTMLElement(samplename: "p", text: "Welcome to Closure SRC")
println(paragraph!.asHTML())
当我们使用 playground 运行上面的程序,得到以下结果。
<p>Welcome to Closure SRC</p>
弱和无主参考
当闭包和实例相互引用,用户可以定义在一个闭合作为无主引用捕获。它不会允许用户在同一时间解除分配实例。当实例在某个时候返回一个“nil” 定义并使用弱实例的值。
class HTMLElement {
let module: String
let text: String?
lazy var asHTML: () -> String = {
[unowned self] in
if let text = self.text {
return "<(self.module)>(text)</(self.module)>"
} else {
return "<(self.module) />"
}
}
init(module: String, text: String? = nil) {
self.module = module
self.text = text
}
deinit {
println("(module) the deinit()")








