如何在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
相关产品推荐
相关产品推荐

