在this申请中有声明:
var instanceCount = { globalHappinessInstanceCount++ }()
在试图理解上述陈述时,我发现,据我所测试,下面的陈述达到了相同的结果:
var instanceCount = globalHappinessInstanceCount++
Q1。实现第二个没有的第一个声明是什么?
Q2。闭包表达式后面的()大括号是否表示空元组,初始化语法,......或者是什么?我应该怎样阅读第一个陈述?
答案 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
}()
}