arrays - Swift 内联闭包错误?

标签 arrays swift sorting closures

我正在通过 Apple 提供的书籍学习 Swift。在闭包部分,我注意到这三种向排序方法添加闭包的方法会产生不同的迭代次数来对数组进行排序。

let names = ["chris", "alex", "eva", "barry", "daniella"]

let reverse1 = names.sort({ (s1: String, s2: String) -> Bool in
    return s1 > s2
})

let reverse2 = names.sort( { (s1: String, s2: String) -> Bool in return s1 > s2 })

let reverse3 = names.sort({ s1, s2 in s1 > s2 })

xcode

这是一个错误吗?因为 reverse1reverse2 唯一不同的是换行符。

最佳答案

闭包在每个场景中执行 9 次,第 10 次是打印 reverse1reverse2 等...如果您使用相同的闭包,但不是内联,它将打印与第一种情况完全相同: enter image description here

所以它更像是一行被执行了多少次,如果你看一下由 ; 分隔的简单的一行声明:

enter image description here

关于arrays - Swift 内联闭包错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34715199/

相关文章:

Java-使用for循环将字母表放入数组中

ios - Swift:未识别 UITextField

ios - 在Swift中仅改组结构的一部分

algorithm - 尽管基数排序不是稳定排序,但为什么基数排序会划分它的元素?

xml - 使用 XSLT 排序

javascript - 有一个对象数组,需要添加新的对象。如何检查是否只有一个 key : value pairs exist

javascript - 如何在java脚本中声明未知大小的用户定义对象数组

java - 为什么打印出两位数字而不是一位?

ios - 如何检测图像(GIF)是动画的还是静止的

swift - 位于 View 顶部的导航栏