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

