頻繁に見かけるんですけど、
いまいち分かってない以下のような記述。
これは一体なんなのか。
すごく冗長に見えるし。
ぱっと見、理解できなかったので、
基本的な部分を少し噛み砕いてみました。
順番にやっていきます。
🤔 enum
まず、列挙型の enum。
enum Animal {
case dog
case cat
case monkey
}
また、次のように書いても同じ。
enum Animal {
case dog, cat, monkey
}
case がいるんですね !
🤔 extension で switch ~ case 追加
extension で拡張して追加。
enum Animal {
case dog, cat, monkey
}
extension Animal {
var hiragana: String {
switch self {
case .dog: "いぬ"
case .cat: "ねこ"
case .monkey: "さる"
}
}
}
print(Animal.cat.hiragana)
// ねこ
紐づくんですね。
それぞれの enum 要素に。
🤔 さらにもう一つ追加
enum Animal {
case dog, cat, monkey
}
extension Animal {
var hiragana: String {
switch self {
case .dog: "いぬ"
case .cat: "ねこ"
case .monkey: "さる"
}
}
var katakana: String {
switch self {
case .dog: "イヌ"
case .cat: "ネコ"
case .monkey: "サル"
}
}
}
print(Animal.cat.hiragana)
print(Animal.monkey.katakana)
// ねこ
// サル
そういうことか !
enum の「それぞれの要素から枝が生えていく」のか !
🤔 まとめ
どうやら考え方としては、
ベースの enum のそれぞれの要素に extension で枝を生やしていく
ようなイメージでいいのでしょうか。
ネストしたデータ構成の編集時に便利に使えそうです。
推測できれば、クラス名の省略ができることも良い !
しかし、Swift の enum は機能豊富らしいけど、
まずは、これくらいでいいかな。