我试图理解为什么在将块作为参数时可以在类初始化中省略圆括号。
没有括号的示例:
var block = CCActionCallBlock { () -> Void in
NSLog("sedfjsdkl")
}
这是带正方形的正式版本:
var block = CCActionCallBlock ( { () -> Void in
NSLog("sedfjsdkl")
})
两种变体都按预期工作,没有任何运行时错误,也没有编译器警告。
在哪种情况下我可以省略课程'初始化括号?这是相同的代码还是有任何副作用?关于我应该注意的闭包/块的其他语法糖吗?
注意:我意识到一个闭包作为最后一个参数可以在括号后写出,但无法找到任何相关内容完全省略括号。
例如,我通常不能省略类初始化括号,似乎必须使用块/闭包作为语法糖的参数:
var block = MyClass // error, obviously ...
更新 显然Xcode自动填充到没有括号的版本。
答案 0 :(得分:6)
来自Swift参考中的Closures(强调添加):
请注意
如果提供闭包表达式作为函数的唯一参数 并且您将该表达式提供为尾随关闭,您执行不需要 当你在函数的名字后写一对圆括号() 调用函数。