class - Swift 类省略带闭包的括号 : syntactic sugar or something else?

标签 class swift syntax closures syntactic-sugar

我试图理解为什么在将 block 作为参数时可以在类初始化中省略圆括号。

没有括号的例子:

var block = CCActionCallBlock { () -> Void in
    NSLog("sedfjsdkl")
}

这是带括号的形式上正确的版本:

var block = CCActionCallBlock ( { () -> Void in
    NSLog("sedfjsdkl")
})

两种变体都按预期工作,没有任何运行时错误或编译器警告。

在什么情况下我可以省略类的初始化括号?这是相同的代码还是有任何副作用?关于闭包/ block ,还有其他我应该注意的语法糖吗?

注意:我知道一个闭包作为最后一个参数可以写在括号之后,但找不到与省略括号相关的任何内容完全。

例如,我不能只是一般地省略类初始化括号,它似乎必须将 block /闭包作为语法糖工作的参数:

var block = MyClass   // error, obviously ...

更新: 显然,Xcode 会自动完成没有括号的版本。

最佳答案

来自 Closures在 Swift 引用中(添加了重点):

NOTE

If a closure expression is provided as the function’s only argument and you provide that expression as a trailing closure, you do not need to write a pair of parentheses () after the function’s name when you call the function.

关于class - Swift 类省略带闭包的括号 : syntactic sugar or something else?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27405122/

相关文章:

c# - 在选择要写入新应用程序的第一个 "class"时,您应该如何决定?

java - 新手 - 初始化 Java 类

java 。用户的输入通过实例变量在主类中起作用,但在其他类中不起作用

Xcode 7.3 在一个类中打字非常慢

ios - 测试定义为 Any 的值的数组包含,但保证属于同一类型。

Javascript Netbeans 访问新的类语法

java - 从不同类别生成 2 个数字时如何停止获得相同数字

ios - Firebase 不会向所有实时 iOS 应用用户发送推送通知

c# - ASP.NET - @ 语法和 <% %> 之间的区别?

c++ - 应该如何阅读此 C++ 语法?