在带有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 "?"
}
为什么会有警告?
答案 0 :(得分:49)
我理解为什么:
我“切换”的对象是enum
,我的enum
只有3个条目:.foo
,.bar
,baz
。
编译器认为不需要默认值,因为enum
的每一种可能性都会被测试。
答案 1 :(得分:4)
我认为此警告违反了open-closed principle。稍后添加枚举值时,将缺少默认值,并且无法预测代码将执行的操作。所以你必须改变这个地方。无论如何,使用switch()完全违反了这个原则。
答案 2 :(得分:3)
这可能是因为type
是一个包含3个案例的枚举,并且编译器知道switch语句是详尽的,因此您不需要default
语句来处理所有可能的情况