初心者、基礎を積み上げる「タプルと代入操作」
代入操作
タプルは同じ型を持つ変数に代入可能だが(前の記事参照)、さらに!一度の代入で各要素を別々の変数や定数に格納することが可能。
let attack = ("物理と魔法",30 ,70) let ( description, physics,magic) = attack print("\(description) \(physics) \(magic)") //物理と魔法 30 70
2行目はdescription, physics,magicという3つの新しい定数を定義して、値を代入している。このような代入だと、タプルの要素を別々な定数に一気に代入できる。
!さらに一部の値が不要な場合は「 _ 」 で使わないことを明記。
let (description, _, _) = attack
この時の「_」は要素の数を合わせるために使用しているため、ないとエラーとなる。
Xcodeのplaygroundなどで試すとGood
!タプルにはどんなインスタンスも含むことができるので、タプルの中にタプルを含むことができる。
let status = ("攻撃力",(50,60)) //(String)と(Int,Int)の2つの要素をもったタプル let (attack,(p,m)) = status //要素を格納 let (name, _) = status //(Int,Int)の値は使用しない場合
なお、この例で定数statusの50という値はstatus.1.0として参照できる。
タプルを使うと複数の値を同時に代入できる。これを利用するとSwap関数に相当する機能も容易に実現可能。
var a = 1, b = 0 (a,b) = (b,a) //aにbを、bにaを代入 print("a = \(a), b = \(b) ") // a=0,y=1と出力される
タプルを使ってフィボナッチ数列を計算するプログラム例
var x1 = 0, x2 = 1 print(" \(x1) ") for var i = 0; i < 50; i++ { ( x1, x2) = ( x2, x1+x2) print("\(x1)") }
ここまでのまとめ3つ
- 一度の代入で各要素を別々の変数や定数に格納することが可能。
- 一部の値が不要な場合は「 _ 」 で使わないことを明記。
- タプルの中にタプルを含むことができる。
参考書籍:
To Be Continue...