我试图声明一个 void 返回闭包,并在另一个表达式之后立即使用它。所以我意识到编译器没有“看到”空格,但为什么它认为 someFunc
有一个闭包参数,而它显然没有?换句话说,为什么 ;
是必要的?
func someFunc() {
}
func someFunc2() {
someFunc();
{ arg in
print("\(arg + 1)")
}(0)
}
当分号被删除时,xcode 会给出错误“参数传递给不带参数的调用”。这真的是按照设计的吗?
最佳答案
f {/* 这里的闭包内容 */}
是尾随闭包更常见的形式,但括号不一定必须被省略(事实上,如果闭包之前还有其他参数),这意味着 f() {/* 这里的闭包内容 */}
也是一个有效的尾随闭包。
有些人喜欢在新行中开始 {
(例如,我知道这是 C# 中的约定),因此您看到的这种行为看起来像是为了适应这些人。
关于swift - 为什么 swift 编译器认为闭包是尾随的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55484649/