如何在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
答案 0 :(得分:2)
我认为这不可行。
即使您有枚举A_1,其值为B和C;和另一个值为C和D的枚举A_2,正确的名称是A_1.B,A_1.C,A_2.C,A_2.D。所以它们是完全不相关的类型,没有自动的方法来丢弃你认为重复的东西。除非你自己基于字符串表示
也许你正在考虑错误的宏观问题(或者你真的需要这样做,因为有人这样定义,你必须这样做)。你有没有在两个枚举上有一个共同的特点?这将允许您的方法接收枚举(不确定它是否有效,因为您想要Enumeration.Value ...)
其他选择是拥有2in1类型。 [FilterDimensions,Filter2Dimensions]可以执行此操作,但我几乎可以确定cats,scalaz或shapeless具有更合适的类型
我在Scala上写了一些关于枚举的东西,也许你觉得它很有用。它涵盖了原生scala Enumerations的一些替代方案,也许其中一些具有您需要的功能: