我想了解swift中的闭包,并且缺少一些基本的东西。
考虑下面的例子:Swift Map Sorted Closure
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}
为什么多余的括号在地图工作,但没有排序? 即
numbers.sorted({(n1:Int, n2:Int) -> Bool in return n1 < n2})
不编译...
"error: argument passed to call that takes no arguments"
请会有人能解释的区别?谢谢。
这里的概念区别是什么?即为什么map没有**:例如**,或者为什么** by:**被指定为sorted? –
@DuncanRowland,因为正如我在我的回答中提到的那样,它会返回一个带有映射结果的新数组,它不应该映射数组本身。 –
谢谢,但正如你所说,**排序**和**映射**返回新对象(只有**排序** - 我没有考虑 - 改变现有的实例)。 –