一尘不染

是否有一个zip函数来创建包含两个以上元素的元组?

swift

我刚刚发现了Swift zip函数。似乎很有用。

它需要2个输入数组,并从每个数组的值对中创建一个元组数组。

是否有zip的变体,可以接受任意数量的数组并输出具有相同数量元素的元组?似乎应该有一种方法可以做到这一点。


阅读 329

收藏
2020-07-07

共1个答案

一尘不染

不,zip由于Swift缺乏可变参数泛型,因此目前无法实现任意数量的序列。泛型宣言中对此进行了讨论。

同时,我编写了一个gyb模板来生成自定义Arity的ZipSequences。3...10为了方便起见,我还预先生成了Arip的ZipSequences
在这里可用。

实际上:

let integers = [1, 2, 3, 4, 5]
let strings = ["a", "b", "c", "d", "e"]
let doubles = [1.0, 2.0, 3.0, 4.0, 5.0]

for (integer, string, double) in zip(integers, strings, doubles) {
    print("\(integer) \(string) \(double)")
}

印刷品:

1分1.0

2分2.0

3分3.0

4天4.0

5 e 5.0

2020-07-07