var声明后,这个花括号块做了什么?

时间:2016-09-23 13:23:30

标签: swift

我正在看这个Swift代码:

var modelController: ModelController {
    if _modelController == nil {
        _modelController = ModelController()
    }
    return _modelController!
}

var _modelController: ModelController? = nil

我感兴趣的是第一行:它声明了一个名为modelController的类型为ModelController的变量,后面是一些用花括号括起来的代码,我认为它在Swift中称为闭包。

这个封闭有什么作用?什么时候执行?这种模式叫什么?我正在使用Swift 3。

1 个答案:

答案 0 :(得分:7)

这称为computed property。你在这里看到的是一种只读的计算属性。

每次访问属性(在这种情况下为self.modelController)时,闭包都会运行,返回将用于属性的值。

在给出的示例中,代码检查是否设置了另一个变量_modelController,如果没有则设置它,然后返回该值。这是第一次访问对象时延迟加载对象的方法。