Swift Switch案例:默认永远不会执行警告

Mat*_*ler 18 switch-statement swift2

在带有Swift 2代码的Xcode 7b2上,我有以下内容:

在切换情况下,编译器返回以下警告:

Default will never be executed
Run Code Online (Sandbox Code Playgroud)

代码 :

switch(type) {
  case .foo:
    return "foo"
  case .bar:
    return "bar"
  case .baz:
    return "baz"
  default:
    return "?"
}
Run Code Online (Sandbox Code Playgroud)

为什么会有警告?

Mat*_*ler 50

我恍然大悟:
对我"切换"的对象是enum和我的enum只有3项:.foo,.bar,baz.

编译器得到不需要默认值,因为每次enum测试的可能性.


小智 5

我认为该警告违反了开放原则。以后添加枚举值时,默认值将丢失,并且您无法预测代码将执行的操作。所以你也必须改变这个地方。无论如何,完全使用switch()违反了这一原理。

  • 一旦添加另一个值,您的代码就会停止编译。编译器在考虑大小写的每个switch语句处引发错误。此评论有些晚,但希望仍然有用。 (4认同)