Swift 范围检查 > 在开关中
Swift range check > in switch
以下代码无法在 Swift 中编译。最好的替代表达方式是什么?
//f1 & f2 are float vars between 0 & 1
switch value {
case 0...f1:
break
case >f1..f1+f2:
break
case >f1+f2..<=1:
break
default:
break
}
无法在 Swift 中创建低端开放的范围。
这将实现您的预期:
switch value {
case 0...f1:
print("one")
case f1...(f1 + f2):
print("two")
case (f1 + f2)...1:
print("three")
default:
print("four")
}
由于 switch
与它找到的第一个 case
匹配,您不必担心 non-inclusive 处于低端。 f1
将与 "one"
案例匹配,因此 "two"
案例也包含它并不重要。
如果你想让第一种情况排除0
,你可以这样写:
case let x where 0...f1 ~= x && x != 0:
或
case let x where x > 0 && x <= f1:
以下代码无法在 Swift 中编译。最好的替代表达方式是什么?
//f1 & f2 are float vars between 0 & 1
switch value {
case 0...f1:
break
case >f1..f1+f2:
break
case >f1+f2..<=1:
break
default:
break
}
无法在 Swift 中创建低端开放的范围。
这将实现您的预期:
switch value {
case 0...f1:
print("one")
case f1...(f1 + f2):
print("two")
case (f1 + f2)...1:
print("three")
default:
print("four")
}
由于 switch
与它找到的第一个 case
匹配,您不必担心 non-inclusive 处于低端。 f1
将与 "one"
案例匹配,因此 "two"
案例也包含它并不重要。
如果你想让第一种情况排除0
,你可以这样写:
case let x where 0...f1 ~= x && x != 0:
或
case let x where x > 0 && x <= f1: