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: