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

Swift指南中枚举示例为何对单一值使用switch?

为什么要对确定值的枚举变量使用switch?

你提到的这段Swift官方示例代码确实容易让人疑惑:明明success已经被明确赋值为ServerResponse.result("6:00 am", "8:09 pm"),却还要用switch语句去匹配它。其实原因很简单:

  • 这只是语法演示的需要
    官方《Guided Tour》的核心目的是教你如何用switch处理枚举的不同case分支,所以用一个确定值的变量来展示语法的正确性——不管变量是枚举的哪一种case,switch都能准确匹配对应的处理逻辑,同时也展示了Swift枚举关联值的提取方式(比如把result里的两个字符串提取为sunrise和sunset)。

  • 实际开发中变量值是不确定的
    真实场景里,你拿到的ServerResponse类型变量几乎不会是提前确定好的。比如它可能是网络请求的返回结果:可能成功返回日出日落时间,也可能失败返回错误信息。这时候switch就成了必须的逻辑,用来分别处理两种不同的情况。举个更贴近实际的例子:

    enum ServerResponse {
        case result(String, String)
        case failure(String)
    }
    
    // 模拟服务器请求,随机返回成功或失败
    func fetchSunriseSunset() -> ServerResponse {
        return Bool.random() ? .result("6:00 am", "8:09 pm") : .failure("Out of cheese.")
    }
    
    let response = fetchSunriseSunset()
    switch response {
    case let .result(sunrise, sunset):
        print("Sunrise is at \(sunrise) and sunset is at \(sunset).")
    case let .failure(message):
        print("Failure...  \(message)")
    }
    

    这里response的值是不确定的,switch就能帮我们覆盖所有可能的情况。

  • Swift的switch要求穷尽枚举所有case
    Swift的switch是强类型检查的,必须覆盖枚举的所有case分支,否则编译器会报错。官方示例写全两个case,也是为了展示符合Swift语法规范的枚举处理方式——不能只写一个result的case就完事。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:24:19