はじめに
Swift5.0
まで Optional
のEnum
のインスタンスに対してswitch文を使用する際は下記のように.some(T)
と.none
で記述する必要がありました。
enum Frequency { case daily case weekly case monthly case yearly } let frequency: Frequency? = .daily switch frequency { case .some(.daily): print("daily") case .some(.weekly): print("weekly") case .some(.monthly): print("monthly") case .some(.yearly): print("yearly") case .none: print("nil") }
これは Swift では Optional
が下記のような enum
で表現されていることに起因します。
enum Optional<T> { case some(T) case none }
このswitch文での分岐に関してSwift5.1
で変更があったため記載します。
環境設定
以下の環境を使用しています。
- Swift5.1
内容
Swift 5.1から Optional
のenumのプロパティをswitch文で分岐させる際に、 .some(T)
のように記載する必要がなくなりました。
具体的には「はじめに」に記載したコードをSwift5.1
では下記のように記述することができます。
enum Frequency { case daily case weekly case monthly case yearly } let frequency: Frequency? = .daily switch frequency { case .daily: print("daily") case .weekly: print("weekly") case .monthly: print("monthly") case .yearly: print("yearly") case .none: print("nil") }
まとめ
細かな変更ですが .someの記載が不要になったことで .
を打つだけで分岐先の候補が一覧で補完されるようになり、書き味がより良くなったと思います。