Arrays 如何压缩成对元组的两个数组?

Arrays 如何压缩成对元组的两个数组?,arrays,swift,Arrays,Swift,我曾多次尝试将其编译。我有两个集合,它们是使用以下内容创建的: let ab:[(Int, Int)] = someCollection.map { thing in return (a, b) } let cd:[(Int, Int)] = someCollection.map { thing in return (c, d) } 我想将它们组合在一起,但找不到正确的语法来为我提供一个工作编译: let merged:[(Int, Int)] = zip(ab, cd).

我曾多次尝试将其编译。我有两个集合,它们是使用以下内容创建的:

let ab:[(Int, Int)] = someCollection.map { thing in 
    return (a, b)
}
let cd:[(Int, Int)] = someCollection.map { thing in 
    return (c, d)
}
我想将它们组合在一起,但找不到正确的语法来为我提供一个工作编译:

let merged:[(Int, Int)] = zip(ab, cd).map { ab:(Int, Int), cd:(Int, Int) in
    return ab[1] > cd[1] ? ab : cd
}
闭包的参数列表就是问题所在。我试过在…和许多其他变体中使用
((a,b),(c,d)),无论是否使用
:Int
提示。我总是得到:

Consecutive statements on a line must be separated by ';'


没有办法压缩成对元组的两个列表吗?

let merged=zip(ab,cd)。map{$0>$1?$0:$1}
元组成员用点符号编制索引,
t.0
t.1
,…,而不是用下标符号
a[0]
a[1]
,…叹气。我试了12件事。我想我在这件事上太努力了。我认为我需要一些特殊性,我越是努力,情况就越糟。
let merged = zip(ab, cd).map { (x, y) in
    return x.1 > y.1 ? x : y
}
let merged = zip(ab, cd).map { (x, y) in
    return x.1 > y.1 ? x : y
}