Switch不会检测所有可能的案件

时间:2016-05-20 14:42:50

标签: swift

编译错误,代码类似于以下示例:

func test(first: Bool, second: Bool) -> Bool {
    switch (first, second) {
    case (true, true):
        return true
    case (true, false):
        return false
    case (false, _):
        return false
    }
}

错误:切换必须是详尽的,请考虑添加默认子句

但是,涵盖了所有可能的情况。有没有人知道解决方案而不添加不必要的默认情况?

2 个答案:

答案 0 :(得分:-1)

编辑:

按此顺序生成代码将满足编译器。

func test(first: Bool, second: Bool) -> String {
switch (first, second) {
case (true, true):
    return "True,  true"
case (false, _):
    return "false, _"
case (true, false):
    return "true, false"
}

答案 1 :(得分:-5)

default:
    print("This is the default case")
}

哟必须将它包含在你的switch语句中

  

每个switch语句都必须是详尽无遗的。也就是说,所考虑类型的每个可能值必须与其中一个开关案例匹配。如果为每个可能的值提供案例是不合适的,则可以定义默认案例以涵盖未明确解决的任何值。此默认情况由默认关键字表示,并且必须始终显示在最后

     

切换声明必须是详尽的

     

在Swift中,控件表达式的每个可能值都必须   匹配案例的至少一个模式的值。当这简单   是不可行的(例如,当控制表达式的类型是   Int),您可以包含一个默认案例来满足要求。