Swift Switch语句
Swift Switch语句

Swift Switch语句

在 Swift 中,switch 语句是一个非常强大的控制流语句,比 C / Java / Objective-C 中的 switch 更加灵活和安全。它不仅支持整数、字符串,还支持枚举、元组、模式匹配等。

1、基本语法

let number = 2

switch number {
case 1:
    print("一")
case 2:
    print("二")
case 3:
    print("三")
default:
    print("其他")
}

与 C/Java 不同,Swift 的 switch 不需要写 break,每个 case 默认就是“只执行当前分支,不会贯穿”。

2、区间匹配

switch 可以直接匹配区间,非常适合数值判断:

let score = 87

switch score {
case 90...100:
    print("优秀")
case 80..<90:
    print("良好")
case 60..<80:
    print("及格")
default:
    print("不及格")
}

3、多个值匹配

可以在一个 case 中写多个匹配条件,用 , 分隔:

let character: Character = "a"

switch character {
case "a", "e", "i", "o", "u":
    print("元音字母")
default:
    print("辅音字母")
}

4、元组匹配

switch 可以匹配元组,很常见于坐标:

let point = (1, 0)

switch point {
case (0, 0):
    print("原点")
case (_, 0):
    print("在 X 轴上")
case (0, _):
    print("在 Y 轴上")
case (-2...2, -2...2):
    print("在 (-2,2) 的方形内")
default:
    print("在其他位置")
}

_ 表示“忽略”。

5、值绑定(let / var)

可以把匹配到的值绑定出来:

let point = (3, 2)

switch point {
case (let x, 0):
    print("在 X 轴上,x = \(x)")
case (0, let y):
    print("在 Y 轴上,y = \(y)")
case let (x, y):
    print("坐标 (\(x), \(y))")
}

6、where 条件

配合 where 可以增加额外条件:

let point = (1, -1)

switch point {
case let (x, y) where x == y:
    print("在直线 y = x 上")
case let (x, y) where x == -y:
    print("在直线 y = -x 上")
default:
    print("普通点")
}

7、枚举匹配

对枚举特别友好,常用在 enum + associated values(关联值)上:

enum Trade {
    case buy(stock: String, amount: Int)
    case sell(stock: String, amount: Int)
}

let trade = Trade.buy(stock: "AAPL", amount: 100)

switch trade {
case .buy(let stock, let amount):
    print("买入 \(amount) 股 \(stock)")
case .sell(let stock, let amount):
    print("卖出 \(amount) 股 \(stock)")
}

8、fallthrough

如果想像 C 那样“贯穿到下一个 case”,要显式写 fallthrough:

let number = 1

switch number {
case 1:
    print("一")
    fallthrough
case 2:
    print("二")
default:
    break
}

总结

Swift 的 switch 语句比传统语言强大很多,支持:

1、自动 break

2、区间 / 多值匹配

3、元组 / 枚举模式匹配

4、值绑定和 where 条件

相关文章

1、Swift用于switch语句的@unknown:https://fangjunyu.com/2025/03/29/swift%e7%94%a8%e4%ba%8eswitch%e8%af%ad%e5%8f%a5%e7%9a%84unknown/

   

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开发者。

欢迎加入我们的 微信交流群QQ交流群,交流更多精彩内容!
微信交流群二维码 QQ交流群二维码

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注