一尘不染

小于或大于Swift switch语句

swift

我熟悉switchSwift中的语句,但想知道如何用来替换这段代码switch

if someVar < 0 {
    // do something
} else if someVar == 0 {
    // do something else
} else if someVar > 0 {
    // etc
}

阅读 409

收藏
2020-07-07

共1个答案

一尘不染

这是一种方法。假设someVarInt或其他Comparable,则可以选择将操作数分配给新变量。这样,您就可以使用where关键字来对其进行范围划分:

var someVar = 3

switch someVar {
case let x where x < 0:
    print("x is \(x)")
case let x where x == 0:
    print("x is \(x)")
case let x where x > 0:
    print("x is \(x)")
default:
    print("this is impossible")
}

可以简化一下:

switch someVar {
case _ where someVar < 0:
    print("someVar is \(someVar)")
case 0:
    print("someVar is 0")
case _ where someVar > 0:
    print("someVar is \(someVar)")
default:
    print("this is impossible")
}

您还可以where完全避免关键字与范围匹配:

switch someVar {
case Int.min..<0:
    print("someVar is \(someVar)")
case 0:
    print("someVar is 0")
default:
    print("someVar is \(someVar)")
}
2020-07-07