使用var = {}()意思的swift语法?

时间:2016-03-08 15:28:05

标签: swift syntax properties

我是Swift的新手,如果这看起来太简单,请对不起。但我无法从任何地方找到答案。

我试图理解下面这个语法。代码有=然后{..}()为什么最后需要()并且=签署?

var productLines: [ProductLine] = { return ProductLine.productLines() }()

据我所知,计算变量类似于......下面的

var varA: [arrayOutput] { return someArray }

={ return something }()究竟在swift中调用或表示什么?

1 个答案:

答案 0 :(得分:8)

您看到有一个用于设置变量初始值的闭包。闭包可以描述为匿名代码块。

这就是您的代码:

var productLines: [ProductLine] = { return ProductLine.productLines() }()

让我像这样扩展您的代码:

var productLines: [ProductLine] = { () -> [ProductLine] in 
    return ProductLine.productLines() 
}()

闭包本身包含以下代码

{ () -> [ProductLine] in 
    return ProductLine.productLines() 
}

两个圆括号()用于执行闭包。 所以你看到的不是计算属性。因此,您可以在此之后更改productLines的值:

productLines = [ProductLine]()

如果它是计算属性,则会出现类似这样的错误:

  

无法分配给属性:productLines是一个只用属性