📅  最后修改于: 2023-12-03 15:35:12.461000             🧑  作者: Mango
在Swift中, switch
声明是一个非常强大的工具,它允许我们为不同的情况提供不同的操作,它是我们经常使用的控制流工具之一。
switch someValue {
case value1:
// do something
case value2:
// do something else
default:
// do something by default
}
在上面的代码中,someValue
将被评估,并且根据其值执行适当的操作。 如果 someValue
的值等于 value1
,则第一个 case
将被执行,如果它等于 value2
,则第二个 case
将被执行。 如果都不等于,则将执行 default
操作。
在Swift中,我们可以使用区间(Range)来匹配值。例如,我们可以将一段代码与值在1到10之间的所有整数关联起来:
switch someValue {
case 1...10:
// do something for values between 1 and 10 (inclusive)
default:
// do something by default
}
在上面的代码中,如果 someValue
的值在1到10之间(包括1和10),则第一个 case
将被执行。
Swift中,我们可以使用元组来匹配多个值。例如,我们可以创建一个元组,其中包含两个值(一个字符串和一个整数),并根据该元组的内容执行适当的操作:
let coordinates = (1, 2)
switch coordinates {
case (0, 0):
print("Origin")
case (_, 0):
print("On the x-axis")
case (0, _):
print("On the y-axis")
case (-2...2, -2...2):
print("Inside the box")
default:
print("Outside the box")
}
在上面的代码中,如果 coordinates
的值等于 (0, 0)
,则第一个 case
将被执行;如果 coordinates
的第二个值等于 0
,则第二个 case
将被执行;如果 coordinates
的第一个值等于 0
,则第三个 case
将被执行;如果 coordinates
在范围 (-2...2, -2...2)
内,则第四个 case
将被执行;如果 coordinates
不符合上述任何情况,则将执行 default
操作。
如果没有匹配的 case
,则 switch
声明会继续执行下一个语句。在上面的代码示例中,如果 coordinates
的值为 (3, 3)
,则将打印 "Outside the box"。
我们还可以使用 fallthrough
关键字来实现在有匹配的 case
中继续执行下一个 case
。例如:
let num = 5
switch num {
case 1...5:
print("Between 1 and 5")
fallthrough
case 6...10:
print("Between 6 and 10")
default:
print("Default")
}
在上面的代码中,如果 num
的值在1到5之间,则将打印 "Between 1 and 5",并继续执行下一个 case
;如果 num
的值在6到10之间,则将打印 "Between 6 and 10";否则将执行 default
操作。
我们可以使用 where
子句来进一步限制 case
匹配的条件。例如:
let num = 5
switch num {
case let x where x % 2 == 0:
print("Even")
case let x where x % 2 != 0:
print("Odd")
default:
print("Default")
}
在上面的代码中,如果 num
是偶数,则将打印 "Even";如果 num
是奇数,则将打印 "Odd";如果 num
不是整数,则将执行 default
操作。
Switch声明是一个非常强大的Swift特性,允许我们为不同情况提供不同的操作。这是Swift开发中使用频率很高的控制流工具之一,要熟练掌握它的用法。