Associated Value を 条件式で処理する
enum で Associated Value を定義した際に、switch 文でしか条件式を組めないと思っていたのですが、if-case
文やfor-case
文なるものが swift2 から追加されていました。
下記のような感じです。
enum GameTitle { case dragonQuest(Int) case persona(Int) } let gameTitle: GameTitle = .dragonQuest(1) if case .dragonQuest(1) = gameTitle { print("一人で竜王に立ち向かうとかマジ勇者") } if case .persona(let number) = gameTitle, number == 3 { print("映画になった") } let playedTitle: [GameTitle] = [.dragonQuest(1), .dragonQuest(2), .dragonQuest(6), .persona(3), .persona(4)] for case .dragonQuest(let number) in playedTitle where number <= 3 { print("ドラクエ \(number) はリメイク版でならプレイしたことある") }