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

时间:2015-07-05 23:25:12

标签: switch-statement swift2

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

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

Default will never be executed

代码:

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

为什么会有警告?

3 个答案:

答案 0 :(得分:49)

我理解为什么:
我“切换”的对象是enum,我的enum只有3个条目:.foo.barbaz

编译器认为不需要默认值,因为enum的每一种可能性都会被测试。

答案 1 :(得分:4)

我认为此警告违反了open-closed principle。稍后添加枚举值时,将缺少默认值,并且无法预测代码将执行的操作。所以你必须改变这个地方。无论如何,使用switch()完全违反了这个原则。

答案 2 :(得分:3)

这可能是因为type是一个包含3个案例的枚举,并且编译器知道switch语句是详尽的,因此您不需要default语句来处理所有可能的情况