2017-05-18 83 views
0

如何在scala中結合兩個枚舉?結合兩個枚舉

object FilterDimensions extends Enumeration { 
    type FilterDimensions = Value 
    val Instance, Usage, Cost = Value 

} 

object Filter2Dimensions extends Enumeration { 
    type Filter2Dimensions = Value 
    val Instance, Savings, Coverage = Value 

} 

輸出需要一個單枚舉包含只有不同的值

Enum - Instance, Usage, Costs, Saving, Coverage 

回答

2

我不認爲這是可能的。

即使您有Enumeration A_1,值爲B和C;和另一個值爲C和D的Enumeration A_2,正確的'名稱是A_1.B,A_1.C,A_2.C,A_2.D。所以他們是完全不相關的類型,沒有自動的方式來丟棄你認爲是重複的東西。除非你自己的基礎上的字符串表示

也許你正在考慮對宏觀問題的錯誤(或者也許你真正需要做的,你因爲有人定義這樣的,你必須這樣做)。你有沒有在枚舉上有共同的特質?這將使你的方法接受或枚舉(如果不知道它的工作原理,因爲你想要的Enumeration.Value ...)

其他的辦法是有一個二合一型。無論[FilterDimensions,Filter2Dimensions]能做到這一點,但我幾乎可以肯定catsscalaz,或shapeless有一個更體面型

我寫的關於Scala的枚舉一些東西,也許你覺得它有用。它講述了一些替代原生階枚舉,也許有些人有你需要的功能:

  1. http://pedrorijo.com/blog/scala-enums/
  2. http://pedrorijo.com/blog/scala-enums-part2/