You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在if语句中捕获Swift枚举的关联值?

Swift枚举关联值的if捕获正确写法

你当前的写法错误在于,用==比较枚举实例时无法直接捕获关联值,==仅用于判断两个枚举是否相等(因为你让枚举遵循了Equatable),而非解构关联值。正确的做法是使用if case模式匹配语法:

基础捕获关联值

enum TestEnum: Equatable {
    case a, b(value: String)
}

func f35() {
    let my: TestEnum = TestEnum.b(value: "Hello")

    if case .b(let string) = my {
        print(string) // 输出 Hello
    }
}

同时判断关联值内容

如果需要同时校验关联值是否等于某个特定值,可以结合条件判断:

// 方式1:先捕获再判断
if case .b(let string) = my, string == "Hello" {
    print(string)
}

// 方式2:直接在模式中指定匹配值
if case .b("Hello") = my {
    print("匹配到值为Hello的b case")
}

if case是Swift专门用于单分支模式匹配的语法,能够直接解构枚举的关联值,完全适配你想要在if语句中捕获关联值的需求。

内容的提问来源于stack exchange,提问作者swiftPunk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 16:05:02