7

私は次の列挙型を持っています:

enum ExampleEnum {
    case one
    case two
    case three
    case four  
}

そして、次のプロパティ定義:

var exampleProperty: ExampleEnum!

Swift 4.2 より前は、次の switch ステートメントを使用していました。

switch self.exampleProperty {
    case .one:
        print("case one")
    case .two:
        print("case two")
    case .three:
        print("case three")
    case .four:
        print("case four")
    default:
        break
}

Swift 4.2 に切り替えてから、この switch ステートメントでエラーが発生します。

Enum case 'one' not found in type 'ExampleEnum?'

オプションを暗黙的にアンラップするために感嘆符を使用して型を明確に定義したため、これは奇妙に感じます。しかし、それはしていないようです。エラーを解消するには、次のように切り替えを実行する必要があります。

switch self.exampleProperty! {
    case .one:
        print("case one")
    case .two:
        print("case two")
    case .three:
        print("case three")
    case .four:
        print("case four")
}

上記で行ったことは、定義が暗黙的にラップ解除されていても、exampleProperty 変数を再度ラップ解除し、スイッチからデフォルトを削除することでした。

なぜSwift 4.2でこの変更が行われたのか疑問に思っていますか? switch ステートメントの変更ですか、それともなぜこのアンラップが再度必要なのですか。冗長に見えますか?

4

1 に答える 1