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

Swift中如何通过函数更新枚举类型并实现状态切换?

Swift枚举状态切换功能修复

你这段代码的问题在于toggle()方法里只是生成了新的枚举实例,但没有将其赋值给self,所以调用后变量的状态根本没变化。

修正后的代码如下:

enum MyEnum {
    case yes
    case no
    
    mutating func toggle() {
        switch self {
        case .yes:
            self = .no
        case .no:
            self = .yes
        }
    }
}

func ff() {
    var test: MyEnum = .yes
    test.toggle()
    // 此时test的值已经变成.no了
}

核心改动就是在switch分支里把新的枚举值赋值给self——因为mutating方法允许修改枚举实例自身,只有赋值给self才能真正改变当前实例的状态。另外把default换成明确的.no分支,代码会更清晰,避免后续扩展枚举case时出现意外。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 20:12:00