私は最近Swift zip
機能を発見しました。それはかなり役に立つと思われる。2つ以上の要素を持つタプルを作成するzip関数はありますか?
これは2つの入力配列を取り、各配列からの値のペアのうちのタプルの配列を作成します。
任意の数の配列をとり、同じ数の要素を持つタプルを出力するバリアントがありますか?これを行う方法があるように思われる。
私は最近Swift zip
機能を発見しました。それはかなり役に立つと思われる。2つ以上の要素を持つタプルを作成するzip関数はありますか?
これは2つの入力配列を取り、各配列からの値のペアのうちのタプルの配列を作成します。
任意の数の配列をとり、同じ数の要素を持つタプルを出力するバリアントがありますか?これを行う方法があるように思われる。
いいえ、任意の数の配列に対するzip
は、Swiftの可変ジェネリックの欠如のために現在可能ではありません。これはthe Generics Manifestoで議論されています。
一方、私はカスタムアライメントのZipSequencesを生成するためにgyb
テンプレートを書いていました。私はあなたの便宜のためにアライリティ3...10
の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)")
}
プリント:アクションでIt's available here.
1 1.0
2 B 2.0
3 C 3.0
4 D 4.0
5心の中で電子5.0
クマ、あなたはその後、別の内部の巣1 zip
、およびネストされたタプルとそれを解凍することができます:任意のためzip
を持つものとして
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, zip(strings, doubles)) {
print("\(integer) \(string) \(double)")
}
ほどエレガントされませんn個のタプルがありますが、それは仕事を完了します。
あなたは天才です。 –
私はSwiftのエキスパートではありませんが、シーケンスパラメータの可変数をとる関数を作成することはできますが、戻り値の型を未知のサイズのタプルとしてどのように宣言しますか? – rmaddy
良い点。ジェネリックを使ってタプルを作成する関数を定義することができます。タプルを作成する要素は入力配列要素の型ですが、可変サイズのタプルを定義する方法はわかりません。 –