😳

[Swift] Tupleは要素ごとに初期化できる

2021/06/03に公開

とてもギョッとしたのですが、SwiftのTupleは要素ごとに初期化できるようです。

let tuple: (Int, String, Bool)
tuple.0 = 42
print(tuple)     // ここではまだエラー
print(tuple.0)   // これはエラーにならない
if Bool.random() {
    tuple.1 = "Hello"
} else {
    tuple.1 = "Goodbye"
}
tuple.2 = true
print(tuple)     // ここでは動く

動作的にはこう書いたのと変わらないようです。

let tuple.0: Int
let tuple.1: String
let tuple.2: Bool

1つの定数ではしばしば使っていましたが、Tupleでも同じことができるとは思いませんでした。

let x: Int
if Bool.random() { 
    x = 42
} else {
    x = 46
}

イマイチ用途は浮かばないですが、覚えておくとギョッとせずに済みそうです。

Discussion