Swift无法确定switch子句是否详尽
这是一个人为的问题,因为我想更详细地了解swift。 swift编译器抱怨以下内容不够详尽。当然,在一般情况下,它无法确定案例陈述是否详尽无遗。我该怎么做 告诉编译器我的列表是详尽的,比如下面的例子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:
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
子句的方法。它可能不会成为一个永远无法修复的“编译器错误”。通过运算符重载,可以创建既不==
也不的类型=对于相同的两个操作数,code>将返回true
;见17568787。苹果公司已经报告了17568787的错误。它是关闭的,因为解析它需要约束解算器,但这会对编译时间产生不利影响。