Swift特殊关闭语法

时间:2016-04-18 04:43:13

标签: swift

this申请中有声明:

var instanceCount = { globalHappinessInstanceCount++ }()  

在试图理解上述陈述时,我发现,据我所测试,下面的陈述达到了相同的结果:

var instanceCount = globalHappinessInstanceCount++  

Q1。实现第二个没有的第一个声明是什么?

Q2。闭包表达式后面的()大括号是否表示空元组,初始化语法,......或者是什么?我应该怎样阅读第一个陈述?

1 个答案:

答案 0 :(得分:1)

  

Q1。实现第二个没有的第一个声明是什么?

AFAIK它只会创建一个不必要的闭包,它不会增加任何值......

  

Q2。闭包表达式后面的()大括号是否表示空元组,初始化语法,......或者是什么?我应该怎样阅读第一个陈述?

是方法调用。就像

let foo = { globalHappinessInstanceCount++ }
foo()

更新

我刚刚阅读了链接中的代码,在类范围的上下文中,它是不同的。

class HappinessViewController
{
    var instanceCount = { globalHappinessInstanceCount++ }()
}

定义了一个属性instanceCount: Int,其值为globalHappinessInstanceCount++

var instanceCount = globalHappinessInstanceCount++

没有多大区别

但是在Swift 3中,++运算符将被删除,您可能希望将其更改为globalHappinessInstanceCount += 1。但问题是+=运算符的结果类型为Void而不是Int。所以你必须像

一样写
class HappinessViewController
{
    var instanceCount: Int = {
        let instanceCount = globalInstanceCount
        globalInstanceCount += 1
        return instanceCount
    }()
}