読者です 読者をやめる 読者になる 読者になる

"まだ"の力 [基礎辞書]

学んだことを書いていきます。質問やエラーなどございましたらお気軽にコメントお願いします。

初心者、基礎を積み上げる「タプルと代入操作」

タプル

代入操作

タプルは同じ型を持つ変数に代入可能だが(前の記事参照)、さらに!一度の代入で各要素を別々の変数や定数に格納することが可能。

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つ

  1. 一度の代入で各要素を別々の変数や定数に格納することが可能。
  2. 一部の値が不要な場合は「 _ 」 で使わないことを明記。
  3. タプルの中にタプルを含むことができる。

参考書籍:

To Be Continue...