无法扩展枚举; 我应该使用什么替代方案?

5
我正在进行一些类和超类的测试。大部分都很合理,但目前有一件事情我不确定。我在我的超类中使用了一个枚举,我想在我的类中扩展它。我相信我不能这样做,但我不知道应该怎么做——如果有好的建议,或者指向关于类的详细链接的任何指针,那将不胜感激。
以下是我大致尝试的内容:
class basicSprite: SKSpriteNode {
// This is the super-class
  enum state: Int {
    Paused, Idle, Damaged, Dead
  }
  var currentState = state.Paused
  ....
}

class playerSprite: basicSprite {
  extend enum state: Int {
    // This should take the enum state from the super-class and
    // add these 4 states, giving 8 in total
    case MovingLeft, MovingRight, MovingUp, MovingDown
  }
  ....
}

var newPlayer: playerSprite
newPlayer.state = MovingLeft
....
switch newPlayer.state {
  case playerSprite.state.Idle: break
  case playerSprite.state.MovingLeft: break
  default: break
}

据我所知,使用枚举无法实现这一点 - 我应该使用什么替代方案?或者如果可以使用枚举实现,该如何操作?

谢谢 :-)


我会使用字符串值来表示状态,例如 case "Idle": - Andy
为什么不添加一个具有只读实例和受保护构造函数的新类? - Daniel A. White
@DanielA.White - 我不明白。如果您能给我一个示例,那将会是很大的帮助! - Garry
1个回答

0

当你公开继承时,你会将变量继承到基类中。

因此,直接将其他值添加到你之前的枚举中即可。


1
我考虑过这个问题,但是我计划创建另一个基于basicSprite的类,它应该只继承原始的4个状态,而不是playerSprite的4个状态。我可以找到其他解决方法,只是认为这是一种优雅的解决方案,并想知道如何实现! - Garry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接