很简单的问题,很难解决,至少对我来说。当条件都正确时,如何编写 if 和 else if 语句的代码?就像我做一个变量 x 和 y,我检查 x 是否为 5,然后它说一些东西,但当 y 为 5 时它又说一些东西,现在的重点是,如果两者都是 5 怎么办?bc 在一个 if 语句之后它会跳过另一个 if/else if。感谢您的解决方案!
Swift 实际上有一个非常强大的 switch 语句,您可以使用它来检查多个变量的值。考虑这段代码:
var x: Int = 3
var y: Int = 5
switch (x, y) {
case (1, 4):
print("x == 1 and y == 4")
case (3, 5):
print("x == 3 and y == 5")
case (5, 5):
print("x and y are both 5")
case (5, let y) where y > 5:
print("x == 5. Y > 5")
case (5, _):
print("x == 5. y == some value we didn't test for.")
case (_, 5):
print("y == 5. x == some value we didn't test for.")
default:
print("Dunno")
}
Run Code Online (Sandbox Code Playgroud)
它的工作原理是将多个值组合成一个元组,然后打开该元组。switch 语句内的 case 可以对元组的值进行各种不同的测试。
该代码打印:
x == 3 且 y == 5
使用我分配给它的值。“_”位表示“不关心”元组的该部分。“let y”的意思是“获取 switch 语句中的第二个值并将其分配给仅在这种情况下存在的局部变量 y”。然后,您可以添加一个“where”子句,让您可以进行更复杂的测试,例如我的“where y > 5”示例。
let y正如 Jessy 在他们的评论中指出的那样,在我的示例中将值绑定到 ycase (5, let y) where y > 5:是没有意义的,因为 switch 语句已经在名为 y 的变量上进行操作。在那个特定的例子中它也能正常工作case (5, _) where y > 5:。
但是,如果 switch 语句是常量值(例如switch (x, 7))或元组变量的开关:
let aTuple = (5,7)
switch aTuple {
case (5, let y) where y > 5:
...
Run Code Online (Sandbox Code Playgroud)
然后将第二个值绑定到变量将会很有用。