我想分享一些枚举属性.就像是:
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"
我看到如何使用上述逻辑来复制案例ActionState并在set函数中进行切换.但我正在寻找一种更好的方法.
我知道枚举不能在Swift中继承,我已经阅读了swift-enum-inheritance的协议答案.它没有解决"继承"或包含来自另一个枚举的案例的需要,而只涉及属性和变量.
Vas*_*huk 16
enum State {
    case started, succeeded, failed
}
enum ActionState {
    case state(value: State), cancelled
}
class Action {
    var state: ActionState = .state(value: .started)
    func set(state: State) { self.state = .state(value: state) }
    func cancel() { state = .cancelled }
}
Bis*_*ire 10
我必须验证用户许可文档。它有两个侧面 - 正面和背面。根据验证文件可能有效或无效。UX 也是这样的,它会是活动状态或非活动状态,并显示相应的颜色。我最终做了以下枚举。
public enum Validity {
    case pending(_ selectState: SelectState)
    case valid(_ selectState: SelectState)
    case invalid(_ selectState: SelectState)
    
    enum SelectState {
      case active(_ side: Side)
      case inactive(_ side: Side)
      
      enum Side {
        case front
        case back
      }
    }
  }
可以称为 -
public var validity: Validity = Validity.pending(.active(.front))
我希望它可以更干净,
Validity.pending.active.front
但到目前为止,这是另一个枚举内部的枚举的解决方案。
Swift 5.1, Xcode 11.4.1
| 归档时间: | 
 | 
| 查看次数: | 4550 次 | 
| 最近记录: |