Случай 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 "?"
}

Зачем было предупреждение?

Ответы

Ответ 1

Я просто понял, почему:
Объект "включен" - это enum, а мой enum имеет только 3 записи: .foo, .bar, baz.

Компилятор получает, что нет необходимости по умолчанию, потому что все возможности enum проверяются.

Ответ 2

Это может быть связано с тем, что type представляет собой перечисление с тремя случаями, и компилятор знает, что оператор switch является исчерпывающим, поэтому вам не нужен оператор default для обработки всех возможных случаев.

Ответ 3

Я думаю, что это предупреждение нарушает принцип open-closed. Когда вы добавите значение перечисления позже, значение по умолчанию будет отсутствовать, и вы не можете предсказать, что будет делать ваш код. Таким образом, вы должны изменить и это место. В любом случае использование switch() вообще нарушает этот принцип.