我正在看这个Swift代码:
var modelController: ModelController {
if _modelController == nil {
_modelController = ModelController()
}
return _modelController!
}
var _modelController: ModelController? = nil
我感兴趣的是第一行:它声明了一个名为modelController
的类型为ModelController
的变量,后面是一些用花括号括起来的代码,我认为它在Swift中称为闭包。
这个封闭有什么作用?什么时候执行?这种模式叫什么?我正在使用Swift 3。
答案 0 :(得分:7)
这称为computed property。你在这里看到的是一种只读的计算属性。
每次访问属性(在这种情况下为self.modelController
)时,闭包都会运行,返回将用于属性的值。
在给出的示例中,代码检查是否设置了另一个变量_modelController
,如果没有则设置它,然后返回该值。这是第一次访问对象时延迟加载对象的方法。