Ответ 1
Я просто понял, почему:
Объект "включен" - это enum
, а мой enum
имеет только 3 записи: .foo
, .bar
, baz
.
Компилятор получает, что нет необходимости по умолчанию, потому что все возможности enum
проверяются.
В 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 "?"
}
Зачем было предупреждение?
Я просто понял, почему:
Объект "включен" - это enum
, а мой enum
имеет только 3 записи: .foo
, .bar
, baz
.
Компилятор получает, что нет необходимости по умолчанию, потому что все возможности enum
проверяются.
Это может быть связано с тем, что type
представляет собой перечисление с тремя случаями, и компилятор знает, что оператор switch является исчерпывающим, поэтому вам не нужен оператор default
для обработки всех возможных случаев.
Я думаю, что это предупреждение нарушает принцип open-closed. Когда вы добавите значение перечисления позже, значение по умолчанию будет отсутствовать, и вы не можете предсказать, что будет делать ваш код. Таким образом, вы должны изменить и это место. В любом случае использование switch() вообще нарушает этот принцип.