一个没有默认情况的快速开关是否可以对双精度类型进行详尽说明?
这个(没有默认情况的)开关会报错:开关必须是详尽的:
var minY = 1.0
switch minY {
case -(Double.infinity)..<0.9:
yAxisMinimum = 0.0
case (0.9..<0.99):
yAxisMinimum = 0.9
case (0.99..<0.999):
yAxisMinimum = 0.99
case (0.999..<0.9999):
yAxisMinimum = 0.999
case (0.9999...Double.infinity):
yAxisMinimum = 0.9999
}
但是这个开关,带有(无用的)默认情况下,可以工作:
var minY = 1.0
switch minY {
case -(Double.infinity)..<0.9:
yAxisMinimum = 0.0
case (0.9..<0.99):
yAxisMinimum = 0.9
case (0.99..<0.999):
yAxisMinimum = 0.99
case (0.999..<0.9999):
yAxisMinimum = 0.999
case (0.9999...Double.infinity):
yAxisMinimum = 0.9999
default:
yAxisMinimum = 0.0
}
我尽量避免在switch语句中使用默认情况,但不确定在Double类型中是否可行。
switch
没有覆盖到所有情况。你还需要处理NaN
。(虽然我不知道这是否会解决编译器错误。) - user1118321-(Double.infinity)..<0.9
可以写成..<0.9
。 - ielyamanicase _:
来匹配任何内容,从而避免使用default
。但我知道这也不是你想要的。 - vacawama