我在 Swift 5.2 中遇到了一个奇怪的元组解构问题。我认为元组解构从前一段时间就在闭包参数中不起作用。实际上,以下内容不起作用:
let expected: ((Int, Int)) -> Void = { a, b in // does not compile
print(a, b)
}
但是,我注意到以下所有工作:
func weird(closure: @escaping ((Int, Int)) -> Void) {
closure((1, 3))
}
// I can understand this
weird { print($0.0 + $0.1) }
weird { a, b in print(a + b) }
// Surprise!
weird { print($0 + $1) }
weird { p in print(p.0 + p.1) }
最后两个示例在 Swift 5.2 之前有效吗?这种行为是否记录在某处?