📜  Swift switch声明(1)

📅  最后修改于: 2023-12-03 15:35:12.461000             🧑  作者: Mango

Swift中的Switch声明

在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 操作。

Switch声明的高级用法
使用区间匹配

在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子句匹配

我们可以使用 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开发中使用频率很高的控制流工具之一,要熟练掌握它的用法。