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 –