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

Swift:如何避免嵌套switch,直接转型枚举关联值?

代码优化方案

你可以利用Swift的模式匹配特性,直接在单个switch语句中匹配多层枚举的关联值,同时通过where从句过滤条件,避免嵌套switch:

switch error {
case Project.Client.LoadError.operationFailed(Project.Client.APIClientError.invalidStatusCode(let message, _)) 
    where message == "error":
    delegate?.error(invalidScript)
default:
    refresh()
}

说明

  • 直接在case中嵌套枚举的关联值匹配,省去内层switch
  • where从句替代原有的guard逻辑,仅当message等于"error"时执行对应分支
  • 原代码中message != nil可以省略,因为message == "error"仅在message非nil时才会成立(可选类型的比较逻辑)
学习术语推荐

如果想深入理解这类逻辑,可以搜索以下术语:

  • Swift 枚举关联值(Associated Values in Swift Enums)
  • Swift 模式匹配(Pattern Matching in Swift)
  • Switch语句的where从句(Where Clauses in Switch Statements)
  • Swift类型转换与模式匹配结合(Type Casting with Pattern Matching)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:20:43