我想分享一些枚举属性。就像这样:
enum State {
case started
case succeeded
case failed
}
enum ActionState {
include State // what could that be?
case cancelled
}
class Action {
var state: ActionState = .started
func set(state: State) {
self.state = state
}
func cancel() {
self.state = .cancelled
}
}
我明白为什么 ActionState
不能继承自 State
(因为状态 cancelled
在 State
中没有代表),但我还是想说 "ActionState 就像是有更多选项的 State,ActionState 可以接收类型为 State 的输入,因为它们也是 ActionState 类型"
我知道在 Swift 中枚举类型无法继承,我已经阅读了 swift-enum-inheritance 的协议回答。它没有解决“继承”或包含另一个枚举类型中的情况,只能继承属性和变量。
我看到如何通过复制 ActionState
中的 case 并在 set
函数中使用 switch 语句来实现上述逻辑。但我正在寻找更好的方法。
cancelled
状态在State
范围内没有相应的等价物。换句话说,ActionState
并不总是可以表示为State
,而反之则成立(但让State
从ActionState
继承会非常奇怪)。我理解你的观点,最终答案可能是不需要继承。 - Guig