【问题标题】:Implicit Returns from Single-Expression Closures swift 3.1单表达式闭包的隐式返回 swift 3.1
【发布时间】:2017-07-13 11:46:04
【问题描述】:

当我通过闭包部分(第 128 页)时,我正在从 Apple iBook 学习 swift,当我在我的 PG 中运行该示例时,有一个隐含的 Returns 示例显示一些错误

游乐场执行失败:错误:12.playground:248:45:错误: 预期的 ',' 分隔符 let sorted = returns.sorted(by: { ( s1, s2 in 返回 s1

我检查了两次。这是我的程序:

var listForShort: [Int] = [4, 65, 343, 22, 5445, 343]

let sorted = listForShort.sorted(by: { ( s1, s2 in s1 < s2 })

for sort in sorted {
    print(sort)
}  

版本 Swift 3.1

【问题讨论】:

  • 此语句中的右括号不足

标签: swift swift3 closures implicit


【解决方案1】:

这样做

 let sorted2 = listForShort.sorted(by: { s1, s2 in s1 > s2 } )

去掉多余的括号

【讨论】:

    【解决方案2】:

    您缺少一个右括号:

    listForShort.sorted(by: { ( s1, s2) in s1 < s2 })
    

    您可能想检查一个更好的语法:

    listForShort.sorted { $0 < $1 }
    

    【讨论】:

    • { $0 &lt; $1 }&lt; 具有相同的类型,因此您可以使用.sorted(by: &lt;)。此外,这是默认行为,因此您只需调用 .sorted()
    猜你喜欢
    • 2014-12-02
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-31
    相关资源
    最近更新 更多