Mar*_*une 6 closures tuples swift
我可以轻松地构建一个元组元组:
let tt = (2, (3, 4))
let (a, (b, c)) = tt
b // => 3
Run Code Online (Sandbox Code Playgroud)
在声明闭包时我想做同样的事情,例如我以为我可以写:
[tt].map { (a, (b, c)) in
// Use b
}
Run Code Online (Sandbox Code Playgroud)
XCode抱怨"未命名的参数必须用空名称写".
我得到"工作"的唯一方法是:
[tt].map { (a, tuple: (b: Int, c: Int)) in
// Use tuple.b
}
Run Code Online (Sandbox Code Playgroud)
这有两个我想避免的缺点:
tuple.b而不是bb和c顺便说一句,我的用例是我想reduce用索引做一个所以我正在尝试使用array.enumerate().reduce
这满足了您的第一个要求,但仍然需要您添加类型注释:
typealias TupleType = (a: Int, tuple: (b: Int, c: Int))
let tt: TupleType = (2, (3, 4))
[tt].map {
print($0.tuple.b)
}
Run Code Online (Sandbox Code Playgroud)