[Swift 基本の型 第6回] タプル型

f:id:KAFAppFactory:20200731105414j:plain

Swiftの基本の型 第6回 タプル型をまとめます。 本記事は「Swift実践入門」を参考にしています。

gihyo.jp

タプル型とは、一言でまとめると複数の値をまとめて一つの型として扱うことです。

タプル型を定義するには、要素となる型を'()'内に','区切りで(型名1, 型名2, 型名3)のように列挙します。 タプル型の要素にはどのような型も指定できますし、要素数にも制限はありません。

例 )

var tuple: (Int, String)

タプル型の値はタプルといい、タプルを生成するには、要素となる値を'()'内に','区切りで(要素1, 要素2, 要素3)のように列挙します。
タプル型の要素を列挙する場合と同じ感じで生成できます。
下の例で直感的に理解できると思います。

上記のInt, String型にタプル 1, "one"を代入。

例 )

var tuple: (Int, String)
tuple = (1, "one")

要素へのアクセス

下記3つの方法でアクセス可能です。
1. インデックスによるアクセス
2. 要素名によるアクセス
3. 代入によるアクセス

1.インデックスによるアクセス

タプルの要素にはインデックスを通じてアクセス可能です。変数や定義に'.'をつけて、'変数名.インデックス'という書式でアクセスします。 最初の要素のインデックスは 0 で 1、2と続きます。(プログラムではよくある話なんですが、1、2、3、...と続かずに0からスタートするんですよね)

例 )

let tuple1 = (1, "one")
print(tuple.0)
print(tuple.1)

2.要素名によるアクセス

タプルの定義時に各要素に名前をつけて、その名前を通じて要素にアクセス可能です。 要素名を定義するには、タプルの要素の前に'要素名:'を追加して、(要素名1: 要素1, 要素名2: 要素2)のように書きます。

例 )

let tuple2 = (a: 1, b: "one")
print(tuple.a)
print(tuple.b)

3.代入によるアクセス

タプルは '()'内に','区切りで列挙された要素数分の変数や定数に代入可能です。 タプルの要素には、代入先の変数や定数の値を通じてアクセス可能です。

例 )

let c: Int
let d: String
(c, d) = (1, "one")
c // 1
d // "one"

"()"内で複数の変数や定数を同時に宣言することも可能です。

例 )

let (e, f) = (1, "one")
e // 1
f // "one"

Void型について ( nilリテラルとの違い )

要素の型が0個のタプル型をVoid型といいます。Void型は、関数の戻り値がないことを表す用途などで使用されます。

() // Void型

ここで、要素の数が0と聞くと、値が存在しないnilリテラルと同じような気がしますが、 実際には根本的に異なりますので注意が必要です。
nilリテラルは、値が存在しえる場所で値がないことを示します。
一方で、Void型はその場所に値が存在しえないことを示しています。

終わりに

今回、Swift 基本の型 第6回としてタプル型をまとめました。複数の型や変数を格納できるため、汎用性は広く使われると思いますので、要素へのアクセス方法などしっかり押さえていきたいですね!