为什么func闭包有时会在Swift中删除它的参数名?

时间:2015-02-22 02:37:20

标签: ios xcode swift

我有两个闭包的功能

testNetworkAvailability(reachableBlock:, unreachableBlock:)

但是当我按下enter键以获得闭包占位符的自动完成时,第二个unreachableBlock将删除变量名称并导致错误。

例如,如果我通过按Enter键打开这个闭包占位符,它将如下所示:

testNetworkAvailability(reachableBlock: { () -> Void in
        <#code#>
    }) { () -> Void in
        <#code#>
    }

事实上,当我将此函数复制到stackoverflow时,这些块的占位符读为<#(() -> Void)?##() -> Void#>。这是奇怪的,因为它应该只是#() -> Void#,不应该吗?

为什么会这样以及如何解决?

1 个答案:

答案 0 :(得分:1)

只要最后一个参数是闭包,Swift就允许您省略参数名称并将其视为内联块。

autoreleasepool {
   // ...
}

请参阅trailing closures上的文档。

然而,XCode的自动完成更喜欢尾随封闭而不是讨论的主题。