0
如果可以通过某种方式扩展Scala枚举值类型,那将会很好,即一种树结构会产生。我的意思是类似的东西:[!例子仅仅是伪代码]
是否可以扩展Scala枚举值类型?
object SomeSubEnum extends Enumeration {
type SomeSubEnum = Value
val SubA, SubB, SubC = Value
}
object SomeTopEnum extends Enumeration {
type SomeTopEnum = Value
val TopA = Value("TopA", Subs = List(SomeSubEnum.SubA, SomeSubEnum.SubB))
val TopB = Value("TopB", Subs = List(SomeSubEnum.SubC))
val TopC = Value("TopC", Subs = List(SomeSubEnum.SubA, SomeSubEnum.SubB, SomeSubEnum.SubC))
}
用法:
def doSomething(param: SomeTopEnum) = {
someTopEnum.Subs.forAll(sub => doMore(sub))
}
doSomethingElse(SomeTopEnum.TopA.Subs.SubB) // Subs could be a map
我在斯卡拉新,在其他语言中我将创建一个一种静态类树结构可以做到这一点,但也许在Scala中有更好的解决方案。
其实,给你一个更灵活的结构,你可以简单地只是改变TopEnum的定义:案例类TopEnum [A <:EnumValue](价值:A,列表[ MyEnum [A]])扩展了MyEnum [A]。这样,你可以有一个混合的TopEnums和SubEnums列表... –
对于一个漂亮的包中的其他Java枚举类似的功能。看到这个家伙发布http://stackoverflow.com/a/27441788/1148030 –