Scala 合并两个枚举

Scala 合并两个枚举,scala,enums,Scala,Enums,如何在scala中组合两个枚举 object FilterDimensions extends Enumeration { type FilterDimensions = Value val Instance, Usage, Cost = Value } object Filter2Dimensions extends Enumeration { type Filter2Dimensions = Value val Instance, Savings, Coverage =

如何在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 

我认为那是不可能的

即使您有一个枚举A_1,其值为B和C;另一个枚举A_2的值是C和D,正确的“名称”是A_1.B、A_1.C、A_2.C、A_2.D。所以它们是完全不相关的类型,没有自动的方法来丢弃您认为是重复的类型。除非基于字符串表示法

也许你在宏观问题上的想法是错误的(或者你真的需要这样做,因为有人这样定义你,你必须这样做)。你有没有想过这两种枚举都有一个共同的特点?这将允许您的方法接收任一枚举(不确定它是否有效,因为您需要枚举.Value…)

另一种选择是使用2in1类型。要么[FilterDimensions,Filter2Dimensions]可以,但我几乎可以肯定,,,要么有一个更合适的类型

我在Scala上写了一些关于枚举的东西,也许你会发现它很有用。它涵盖了本机scala枚举的一些替代方案,其中一些可能具有您需要的功能:


  • 我认为那是不可能的

    即使您有一个枚举A_1,其值为B和C;另一个枚举A_2的值是C和D,正确的“名称”是A_1.B、A_1.C、A_2.C、A_2.D。所以它们是完全不相关的类型,没有自动的方法来丢弃您认为是重复的类型。除非基于字符串表示法

    也许你在宏观问题上的想法是错误的(或者你真的需要这样做,因为有人这样定义你,你必须这样做)。你有没有想过这两种枚举都有一个共同的特点?这将允许您的方法接收任一枚举(不确定它是否有效,因为您需要枚举.Value…)

    另一种选择是使用2in1类型。要么[FilterDimensions,Filter2Dimensions]可以,但我几乎可以肯定,,,要么有一个更合适的类型

    我在Scala上写了一些关于枚举的东西,也许你会发现它很有用。它涵盖了本机scala枚举的一些替代方案,其中一些可能具有您需要的功能: