swift - 为什么 swift 编译器认为闭包是尾随的?

标签 swift

我试图声明一个 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/

相关文章:

swift - 动画不行?

swift - 移除 NSOutlineView 周围的边框

ios - 搜索字符而不是单词 SWIFT

swift - 无法在不可变值: 'self' is immutable error上使用变异 setter/getter

ios - 如何像 iOS "Contacts"应用程序一样显示搜索结果

ios - swift - 找不到 UINavigationBar 标题文本的 numberOfLines 属性

ios - 如何将函数传递给 Swift 中的另一个类

swift - 我如何获取 UITableViewCell 内的 textView 的文本值

在函数中定义的结构

ios - 根据 x 可见单元格的单元格高度设置表格 View 高度