この本を見ながら進めてる↓
前回⇒「【Swift奮闘記ep21】エクステンション(定義、準拠するプロトコルの追加)」
第5章「Swiftの発展的な文法」に突入!まだ文法続くんかい…と嫌になりながらも、これを乗り越えれば何かが変わると信じて突き進んでいく。
今回は「タプル」についてみていく。
タプルとは
タプルとはいろんな値の集まり。
いろんな値ってのが特定の型ではないのが特徴だ。
例えばInt型やString型が混合している集合体ということになる。
実際に見ていけばわかると思うので見ていこう。
※追記
以下二つがタプルについて重要な情報だと思う。
- その場限りの値のまとまりを作りたい場合にタプルを活用する。
- 含まれる値はプロパティのように扱うことができて、それぞれ別の型にすることができる。
タプルの定義
タプルの定義は簡単で、配列みたいな感じでおっけー。
1 2 3 4 5 6 7 8 9 |
ar people = ("太郎",28,"男性") //タプルを定義 var name = people.0 //タプルの1番目を変数nameに代入 var age = people.1 var gender = people.2 people.0 = "二郎" //タプルの1番目の値を変更 |
配列同様、タプルの1番目はインデックス0番目ということに注意。
さらに再代入もできちゃったりする。
値の名前付きタプルを定義
さらに0番目とか数字で表すんじゃなくて、名前をつけることもできる。
1 2 3 4 |
var people = (name: "太郎", age: 28, gender: "男性") let name = people.name let age = people.age let gender = people.gender |
さらにそれを使って再代入することもできる。
1 2 |
people.age = 30 people.gender = "女性" |
タプルは値に名前をつけた方がわかりやすいね。
関数の戻り値をタプルにする
タプルが最も活躍する場面は、関数の戻り値に利用することと言っても過言ではない。
⇒関数の戻り値として複数の値を返すことができるから。
以下、配列の中から最大値と最小値を選ぶ処理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
func minMax(array: [Int]) -> (min: Int, max: Int) { var currentMin = array[0] var currentMax = array[0] for value in array { if value < currentMin { currentMin = value } else if value > currentMax { currentMax = value } } return (currentMin, currentMax) } let result = minMax(array: [20, -5, 1122, 22]) //引数に配列を代入しつつ関数を実行 let min = result.min //-5 let max = result.max //1122 |
自分でこの処理を書けと言われたらなかなか書けないが、見たらなるほどと納得する。
for value in arrayでarrayの中身を順番にvalueに代入して順番にarrayの中身を比較していくと言ったところだ。
if文を使っているが、もし同じ数字が来た場合はどこにも当てはまらないのでスルーなのがミソ。
より大きいか、より小さいかの時、最大値と最小値に認定されるって仕組み。
作れないけどなるほど、いつかは作りたいけど、これ何に使うんだろう〜。
どんどん進む。
コメント