ざっくりん雑記

プログラミングで忘れそうなことをひたすらメモる

Swift - タプル

タプル

タプルは、複数の値を1個の値として扱えることが可能となる。1個の変数に複数の値を代入したり、関数で複数の値を返すこともできる。

宣言と代入

書式
(値1, 値2, ...)

たとえば、以下のような使い方ができる。

let book = ("Let's Swift!", 1200)
var sushikun:(String, Int, String) = ("おいしい", 200, "マグロ")

print(book)
print(sushikun)
("Let\'s Swift!", 1200)
("おいしい", 200, "マグロ")

ちなみに、型を指定していない場合は最初に代入した値をもとに型推論がされるため注意が必要。

let book = ("Let's Swift!", 1200)

book = ("Let's Android", "book")
error: cannot assign value of type 'String' to type 'Int'
book = ("Let's Android", "book")

値を取り出す

タプルに代入された値を取り出す際は、以下のように受け取る。

var book = ("Let's Swift!", 1200)
var (bookName, bookPrice) = book
print(bookName, bookPrice, separator: "/")
Let's Swift!/1200

以上のように、タプルに代入された値の数と受け取りたい数が一致していれば良いが、本の名前だけを取得したい、という場合には_というワイルドカードを使用すれば必要な値のみ受け取ることが可能になる。

var book = ("Let's Swift!", 1200)
var (bookName, _) = book
print(bookName)
Let's Swift!

タプルの値にインデックス番号でアクセス

先程の値を取り出す方法だと、たくさんの値が含まれたタプルの最後の値を取り出したい時に煩雑なコードになってしまう。

タプルはインデックス番号でアクセスすることも可能であるので、上記のような場合はこちらを利用したほうが見通しがよくなる。

var book = ("Let's Swift!", "Let's Xcode", "Let's Macbook", "Let's note")
print(book.3)
Let's note

タプルの値にラベルを付ける

それぞれの値がどういうものなのか、ラベルを付けることで区別することができる。

var book = (name: "Let's Swift!", price: 1500, isbn: "134321234532")
print(book.name)
Let's Swift!

参考