どうもささおです。
associated valueを持つenumとswitchを組み合わせて使うことってよくありますよね!
ふいに書き方を忘れてしまうことがあるのでメモしていきます。
Udemyのオススメの講座
〜〜〜associated valueとパターンマッチング〜〜〜
1 2 3 4 5 6 7 8 9 10 11 12 13 |
enum ColorType { case red(code: String) } let red = ColorType.red(code: "#FF0000") switch red { case .red("#EE0000"): print("一緒") default: print("違う") } // "違う" |
1 |
case .red("#EE0000"): |
ここでん??と思うことがあります。
引数名書いてないけどいいの??というところです。
1 |
case .red(code: "#EE0000"): |
このように書く必要があるのではないか??ということです。
ちなみにどっちでも動きます。
〜〜〜associated valueと定数〜〜〜
1 2 3 4 5 6 7 8 9 10 |
enum ColorType { case red(code: String) } let red = ColorType.red(code: "#FF0000") switch red { case .red(let code): print(code) } |
1 |
case .red(let code): |
定数codeには
1 |
let red = ColorType.red(code: "#FF0000") |
での”#FF0000″が入っています。
これをcase{ }内で定数codeを使用することができます、
まとめ
associated valueを「パターンマッチング」に使ったときも
「引数で定数を定義」するときも
引数内に書きますが、
何を書くかで全く違うものになるので注意が必要です。