web-dev-qa-db-ja.com

Swiftスイッチケース:デフォルトは実行されません警告

Xcode 7b2でSwift 2コードを使用すると、次のようになります。

スイッチの場合、コンパイラは次の警告を返します。

Default will never be executed

コード :

switch(type) {
  case .foo:
    return "foo"
  case .bar:
    return "bar"
  case .baz:
    return "baz"
  default:
    return "?"
}

なぜ警告があるのですか?

20

私はその理由を理解しました:
私が「切り替えた」オブジェクトはenumであり、私のenumには3つのエントリしかありません:.foo.barbaz

enumのすべての可能性がテストされるため、コンパイラーはデフォルトの必要がないことを理解します。

50

この警告は open-closed主義 に違反していると思います。後でenum値を追加すると、デフォルトが欠落し、コードの動作を予測できなくなります。だから、この場所も変えなければならない。とにかく、switch()を使用すると、この原則に違反します。

5

これは、typeが3つのケースを持つ列挙型であり、コンパイラがswitchステートメントが完全であることを認識しているため、すべての可能なケースを処理するためにdefaultステートメントを必要としないためです。

3
Qbyte