我正试图声明一个无效的返回闭包,并在另一个表达式之后立即使用它。因此,我意识到编译器没有“看到”空格,但是为什么它认为someFunc
有明显的闭包参数呢?换句话说,;
为什么是必需的?
func someFunc() {
}
func someFunc2() {
someFunc();
{ arg in
print("\(arg + 1)")
}(0)
}
当删除分号时,xcode给出错误“传递给不带参数的调用的参数”。这真的是根据设计吗?
答案 0 :(得分:0)
git show stash@{0}
是结尾闭包的更常见形式,但是不一定必须省略方括号(实际上,如果闭包之前还有其他参数,则必须使用方括号),这意味着f { /* closure contents here */ }
也是有效的结尾闭包。
有些人喜欢以新行开头f() { /* closure contents here */ }
(例如,我知道这是C#中的约定),所以您看到的这种行为看起来像是要容纳这些人。
答案 1 :(得分:0)
您说“我正在尝试声明一个返回空值的闭包”。但是您没有在函数return中声明关闭
因此更改为:-
func someFunction() {
print("Some function is call")
}
func someFunction2() -> ((_ arg: Any) -> Void) {
someFunction()
return { arg in
print("Closure return")
}
}