Swift中如何创建与指定枚举实例同类型的新实例
解决Swift枚举同类型实例创建问题
嘿,这事儿其实挺简单的,有几种方式能满足你的需求,我给你一一说明:
最直接的显式创建
既然你明确要创建Example.one(string: "World")这个实例,直接写出来就行:
let y = Example.one(string: "World")
这样创建的y和x属于同一个枚举类型Example,并且满足y == .one("World")的要求。
利用类型推断简化写法
如果你不想重复写Example这个枚举名,可以通过类型标注让Swift自动推断:
let y: Example = .one(string: "World")
因为已经指定了y的类型是Example,所以可以直接用.来引用枚举case,代码更简洁。
动态匹配现有实例的case(可选)
如果你的场景是不确定x的具体case,但想创建和x同case的实例(比如这里x是.one就创建.one;如果x是.two就创建.two),可以用switch来实现:
let y: Example switch x { case .one: y = .one(string: "World") case .two: y = .two(string: "World") // 根据需求调整参数 }
这种方式更灵活,适合需要根据已有实例动态生成同case新实例的场景。
另外要注意:要让枚举支持==比较,你需要让它遵循Equatable协议,修改枚举定义如下即可:
enum Example: Equatable { case one(string: String) case two(string: String) }
这样才能正确判断y == .one("World")是否成立哦~
内容的提问来源于stack exchange,提问作者gerbil




