複数の値をまとめて扱うタプル
複数の値をまとめるタプル
タプルとは、複数の値を一組にまとめる機能で、配列のようなものです。
順序があり、配列との違いは異なる型の値でもまとめて扱うことのできるという点です。
複数のデータを,カンマで区切り、()カッコでまとめます。
1 |
(変数名1: 型名1,変数名2: 型名2, ...... 変数名n: 型名n) |
1 |
(値1, 値2, ...... 値n) |
上記を見てみると、実は今まで関数などで複数の値を渡していた書き方は、タプルを使っていたのだと気が付きませんか?
また、これらを定数/変数に入れることもできます。
1 |
var タプル名:(型1, 型2, 型3) = (値1, 値2, 値3) |
活用例は次のとおりです。最小値の「1」と最大値の「100」を返却しています。
1 2 3 4 5 6 7 8 |
// 最小値と最大値を返却する func requestMinAndMax() -> (min: Int, max: Int){ // 値はタプルで返却する return (1, 100) } let minAndMax = requestMinAndMax() let minValue = minAndMax.min // 最小値を取り出す。minAndMax.0でも取り出し可能 let maxValue = minAndMax.max // 最大値を取り出す。minAndMax.1でも取り出し可能 |
タプルの使用意義について詳しく
関数やメソッドの戻り値に復数の情報を指定して返却する際には、辞書や配列、独自クラスを利用するのが一般的です。たとえば、名前と誕生日の2つの値を、呼び出し先の関数から呼び出し元に返却する一般的な方法は、次の図のようになります。
・復数の値を返却する一般的な方法
このように値を返却する方法はいろいろありますが、ここで挙げた3つの方法にはそれぞれデメリットがあります。
・辞書で返却する
辞書を利用することで容易に返却できますが、どのようなkeyを持つ辞書が返却されるかを知るにはドキュメントを調べるしかありません。
・配列で返却する
配列を利用することで容易に返却できますが、どの添字にどの値が設定されているかを知るにはドキュメントを調べるしかありません。誤って範囲外の添字にアクセスするとアプリがクラッシュする危険性があります。
・クラスで返却する
辞書と配列のデメリットはクリアできますが、クラスを定義する必要があり、工数がかかります。
これらのデメリットをクリアにするのがタプルです。これを利用することで、辞書や配列を利用したり、わざわざ独自クラスを用意したりする必要がなくなります。
・タプルは複数の値を一組にまとめることができる