返回具有特定关联数据的一般枚举值

时间:2017-08-08 10:50:37

标签: swift enums

我尝试返回一般枚举值并确定其中一个参数。

这样的东西,给出了这个枚举:

enum {
state1(apple: Apple, color: Color)
state2(pear: Pear, color: Color)
...
}

我希望能够返回一个州,并确定其中的一个州。值。

...
switch state {
case .state1(_, _), .state2(_, _):
return state(...blue color...)
}

这可能吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为您能够获得的最接近的是为case的{​​{1}}个case设置切换enum。然后使用模式匹配来获取要保留的值并重新构建所需的值。

这样的事情:

enum Fruit {
    case state1(apple: Int, color: String)
    case state2(pear: Int, color: String)
}

var state = Fruit.state2(pear: 5, color: "green")

var newState: Fruit

switch state {
    case .state1(let x, _):
        newState = .state1(apple: x, color: "blue")
    case .state2(let x, _):
        newState = .state2(pear: x, color: "blue")
}

print(newState)
state2(pear: 5, color: "blue")