Swift Map Sorted Closure

Dun*_*and 5 arrays sorting mapping closures swift

我试图快速理解闭包,但缺少一些基本的东西。
给出以下示例:

var numbers = [20, 19, 7, 12]
numbers.map({(number: Int) -> Int in return 3 * number})
numbers.map {(number: Int) -> Int in return 3 * number}
numbers.sorted {(n1:Int, n2:Int) -> Bool in return n1 < n2}
Run Code Online (Sandbox Code Playgroud)

为什么额外的大括号适用于地图但没有排序?IE

numbers.sorted({(n1:Int, n2:Int) -> Bool in return n1 < n2})
Run Code Online (Sandbox Code Playgroud)

不会编译...

"error: argument passed to call that takes no arguments"
Run Code Online (Sandbox Code Playgroud)

请问有人能解释一下区别吗?谢谢。

Avt*_*Avt 5

因为排序方法是func Sort(by:)。所以你必须添加by 参数名称:

numbers.sorted(by: {(n1:Int, n2:Int) -> Bool in return n1 < n2})
Run Code Online (Sandbox Code Playgroud)