Swift无法确定switch子句是否详尽

Swift无法确定switch子句是否详尽,swift,Swift,这是一个人为的问题,因为我想更详细地了解swift。 swift编译器抱怨以下内容不够详尽。当然,在一般情况下,它无法确定案例陈述是否详尽无遗。我该怎么做 告诉编译器我的列表是详尽的,比如下面的例子 let point = (2, 2) switch point { case let (x, y) where x == y: println("on the x=y line") case let (x, y) where x != y:

这是一个人为的问题,因为我想更详细地了解swift。 swift编译器抱怨以下内容不够详尽。当然,在一般情况下,它无法确定案例陈述是否详尽无遗。我该怎么做 告诉编译器我的列表是详尽的,比如下面的例子

let point = (2, 2) 

switch point {    
    case let (x, y) where x == y:
        println("on the x=y line")
    case let (x, y) where x != y:
        println("somewhere else off x=y line") 
}
是否是添加空默认值的唯一选项:案例

是否是添加空默认值的唯一选项:案例


在这一点上,是的。这是一个编译器错误,我们目前必须解决它。如果我是你,我肯定会详细介绍你的发现。

我正在研究Swift,我为你的简短片段找到了以下解决方案:

let point = (2, 2)

switch point {
case let (x, y) where x == y:
    print("on the x=y line")
case let (x, y): // Otherwise where x != y:
    print("somewhere else off x=y line")
}

我知道,这不是编译器进行的穷尽性检查的解决方案,但它是一种避免无用的
default
子句的方法。

它可能不会成为一个永远无法修复的“编译器错误”。通过运算符重载,可以创建既不
==
也不
的类型=将返回
true
;见17568787。苹果公司已经报告了17568787的错误。它是关闭的,因为解析它需要约束解算器,但这会对编译时间产生不利影响。