Jupyter AI

11 第四章:控制流之switch语句

📅 发表日期: 2024年8月15日

分类: 🦢Swift 语言入门

👁️阅读: --

在上一章中,我们讨论了 if 语句的基本用法,if 语句是控制流中最基本的结构之一。今天,我们将深入探讨另一种强大的控制流语句——switch 语句。

switch 语句允许我们根据一个变量的值来控制程序的流向,与 if 语句相比,switch 更加清晰和易于维护。它能够处理多个条件,非常适合用于多分支选择结构。

switch 语法

switch 语句的基本语法结构如下:

switch value {
case pattern1:
    // 代码块
case pattern2:
    // 代码块
default:
    // 默认代码块
}

这里的 value 是我们需要进行判断的值,而 case 后面的 pattern 则是我们要匹配的模式。如果某个模式匹配成功,将执行对应的代码块。如果没有任何模式匹配成功,那么将执行 default 中的代码块。

以下是一个简单的示例:

let number = 3

switch number {
case 1:
    print("Number is one")
case 2:
    print("Number is two")
case 3:
    print("Number is three")
default:
    print("Number is not in the range of 1 to 3")
}

在这个例子中,变量 number 的值为 3,因此程序输出 Number is three

模式匹配

值的区间

switch 中,我们不仅可以匹配单一的值,还可以匹配值的范围。这使得 switch 语句非常方便。例如:

let score = 85

switch score {
case 0..<60:
    print("Failing")
case 60..<80:
    print("Passing")
case 80..<90:
    print("Good")
case 90...100:
    print("Excellent")
default:
    print("Invalid score")
}

在这个例子中,根据 score 的范围输出不同的评语。

元组匹配

switch 语句还允许我们使用元组进行复杂的匹配。例如:

let point = (1, 1)

switch point {
case (0, 0):
    print("Origin")
case (let x, 0):
    print("X-axis at $x)")
case (0, let y):
    print("Y-axis at $y)")
case (let x, let y):
    print("Point at ($x), $y))")
}

在这个例子中,我们通过 case 语句匹配元组的不同情况,并使用 let 关键字来提取值。

值绑定

switch 语句还可以通过值绑定,将匹配的值绑定到变量以便在对应的代码块中使用。例如:

let animal = "rabbit"

switch animal {
case "cat", "dog":
    print("This is a domestic animal.")
case "lion", "tiger":
    print("This is a wild animal.")
case let x:
    print("This is a $x).")
}

在这个例子中,对于没有明确匹配到的动物名,我们将其赋值给 x 变量并输出。

fallthrough 控制

switch 语句中,可以使用 fallthrough 关键字来实现穿透行为,允许程序在匹配到某个 case 后继续执行下一个 case 的代码块。例如:

let value = 1

switch value {
case 1:
    print("One")
    fallthrough
case 2:
    print("Two")
case 3:
    print("Three")
default:
    print("Unknown")
}

在上述代码中,由于 fallthrough 的存在,当 value1 时,不仅会输出 One,还会继续输出 Two,结果将是:

One
Two

总结

本章中,我们深入探讨了 switch 语句的多种用法及特性,包括值的匹配、区间匹配、元组匹配、值绑定和 fallthrough 控制。通过这些知识,您可以构建更具可读性和可维护性的代码结构。

在下节课中,我们将进一步讨论控制流中的循环语句,通过学习循环,您将能够执行重复的任务和迭代数据。继续期待我们的下一个主题吧!