swift2 Swift:zip()如何处理两个不同大小的集合?

rqqzpn5f  于 2022-11-23  发布在  Swift
关注(0)|答案(2)|浏览(398)

zip()函数接受两个序列,并返回一个元组序列,如下所示:

output[i] = (sequence1[i], sequence2[i])

然而,序列可能具有不同的维度。我的问题是Swift语言如何处理这一点?
医生完全没用。
在我看来,有两种可能性(在斯威夫特):

  • 在最短的结束处停止
  • 在longest的末尾停止,用默认构造函数或较短元素类型的预定义值填充
nue99wik

nue99wik1#

Swift使用第一个选项,结果序列的长度将等于两个输入中较短的一个
例如:

let a: [Int] = [1, 2, 3]
let b: [Int] = [4, 5, 6, 7]

let c: [(Int, Int)] = zip(a, b) // [(1, 4), (2, 5), (3, 6)]
qjp7pelc

qjp7pelc2#

Apple的zip(_:_:)文稿已更新,以回答此问题:
https://developer.apple.com/documentation/swift/1541125-zip
如果传递给zip(_:_:)的两个序列的长度不同,则生成的序列与较短序列的长度相同。在此示例中,生成的数组与words的长度相同:

let words = ["one", "two", "three", "four"]
let naturalNumbers = 1...Int.max
let zipped = Array(zip(words, naturalNumbers))
// zipped == [("one", 1), ("two", 2), ("three", 3), ("four", 4)]

相关问题