変数や値の根幹にある「タプル」
タプルを使ったプログラム
一見すると配列のような上のプログラムですが、よく見ると「=」のあとが「()」になっています。これはいったいどういうことでしょうか?
自由度の高いタプル
配列よりも自由度の高いタプルでは、格納した要素にラベルをつけたり、型を指定したりできます。
Lesson 1 変数の基本「タプル」を理解しよう
「タプルがあれば、変数や配列を憶えなくてもよかったのでは?」という人もいるかもしれません。でも、そんなことはありません。たしかに、複数の値を格納でき、型も指定可能で、しかも柔軟取り出せるタプルは非常に便利。しかし、変数や型など、それぞれの概念を学ばなければ「型の違う複数の値が格納できる」という意味が理解できませんよね。そのうえで、タプルがこれまでに学んだ「変数と値の関係」の根幹になっていることを説明します。
タプルで「var(name, level, HP) = (“崎谷”, 99, 7)」とし、「print(name)」とすると「崎谷」が出力されます。それを、左下の図のように「name」だけにしたうえで、初期の頃に習った「変数に値を入れる」プログラムと並べてみます。すると、「()」以外同じになるのです。Swiftで扱っている変数は、すべてタプルのラベルであった、ということなんですね。つまり我々はタプルを利用して変数を作っていたのです。
タプルは変数・値の根幹
「宣言している変数は、実はタプルのラベルだった」と聞くと混乱してくるかもしれませんが、これまでどおり変数は変数、タプルは「変数に複数の型の異なる値を入れられるもの」と覚えておきくのがベターです。
ラベルだけで書くことも可能
型の違う複数の値が格納できる「タプル」では、変数名をつけないで「var」のあとにラベルだけ書くことできます。格納した要素を出力したい場合は、「print」でラベルを書けばOKです。
Lesson 2●これまで習ったことを総動員してプログラムを書こう
試験を出し、いきなりいなくなってしまったびび。「タプルは配列にすることもできるよ!」というヒントだけを残していきました。さて、崎谷さんはどういうプログラムを書くことにしたのでしょう。
まずは、配列として型を指定し、それぞれ名前はString型、HP(ヒットポイント)とMP(マジックポイント)はInt型を指定しています。そして、配列の中には、「Sakiya」「Warrior」「Wizard」「Minstrel」のそれぞれの名前、HP、MPがタプルとして格納されています。
そこからはfor文です。もし、「HP_max」が「Party[i].HP」以下だったら、「HP_max」は「Party[i].HP」と一致。これを、「i=0」から4未満、つまり「3」まで処理します。ちなみに「配列名.count」は配列の要素数を受け取る書き方です。最後の出力は、「HP_max」。つまりこれは「HPの最大値」を出力するプログラムだったのですね。
タプル、型の指定、配列、for文、if文を使ったプログラム
今回初めて登場したタプルに加え、これまで身につけてきた型の指定、配列、for文、if文などを使って複雑なプログラムを書いています。HPやMPの部分を住所や電話番号にすれば、アドレス帳になります。
崎谷実穂
ビジネス、IT、教育関係の記事・書籍のライティングを中心に活動するライター。プログラミングの経験はまったくなし。
びび
Swiftに詳しいツバメ。ノンプログラマーにも丁寧にプログラミングを教えてくれます。