传递给的闭包reduce
接受 2 个参数,例如$0
,$1
在简写符号中:
extension Array where Element: Equatable {
var removeDuplicate: [Element] {
return reduce([]) { $0.contains($1) ? $0 : $0 + [$1] }
}
}
(这在 Swift 3 和 4 中都可以编译。)
在 Swift 3 中,您可以使用单个参数$0
,这将被推断为带有元素的元组$0.0
和$0.1
。这在 Swift 4 中不再可能,因为SE-0110 Distinguish between single-tuple and multiple-argument function types。
这是另一个演示更改的示例:
let clo1: (Int, Int) -> Int = { (x, y) in x + y }
let clo2: ((Int, Int)) -> Int = { z in z.0 + z.1 }
两者都在 Swift 3 和 4 中编译,但这
let clo3: (Int, Int) -> Int = { z in z.0 + z.1 }
仅在 Swift 3 中编译,而不在 Swift 4 中编译。