Generic Function

zip(_:_:)

Creates a sequence of pairs built out of two underlying sequences. 2つの根底にあるシーケンスから組み立てられるペアからなるシーケンスを作成します。

Declaration 宣言

func zip<Sequence1, Sequence2>(_ sequence1: Sequence1, _ sequence2: Sequence2) -> Zip2Sequence<Sequence1, Sequence2> where Sequence1 : Sequence, Sequence2 : Sequence

Parameters パラメータ

sequence1

The first sequence or collection to zip. 組み合わされる第1のシーケンスまたはコレクション。

sequence2

The second sequence or collection to zip. 組み合わされる第2のシーケンスまたはコレクション。

Return Value 戻り値

A sequence of tuple pairs, where the elements of each pair are corresponding elements of sequence1 and sequence2. 対のタプルからなるシーケンス、そこにおいて各対の要素らは、sequence1sequence2の要素に相当します。

Discussion 解説

In the Zip2Sequence instance returned by this function, the elements of the ith pair are the ith elements of each underlying sequence. The following example uses the zip(_:_:) function to iterate over an array of strings and a countable range at the same time: この関数によって返されるZip2Sequenceインスタンスにおいて、i番目の対の要素らは、基盤となる各シーケンスのi番目の要素らです。以下の例はzip(_:_:)関数を使って、同時に文字列からなる配列とある可付番範囲の全体にわたって反復します:


let words = ["one", "two", "three", "four"]
let numbers = 1...4


for (word, number) in zip(words, numbers) {
    print("\(word): \(number)")
}
// Prints "one: 1"
// Prints "two: 2
// Prints "three: 3"
// Prints "four: 4"

If the two sequences passed to zip(_:_:) are different lengths, the resulting sequence is the same length as the shorter sequence. In this example, the resulting array is the same length as words: zip(_:_:)に渡された2つのシーケンスが異なる長さであるならは、結果のシーケンスはより短いシーケンスと同じです。この例において、結果の配列はwordsと同じ長さです:


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