2017-05-18 2 views
0

2つの列挙型をスカラーに結合するにはどうすればよいですか?2つの列挙体を結合する

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を持つ列挙型A_2、正しい名前はA_1.B、A_1.C、A_2.C、A_2.Dです。だから、彼らは完全に無関係のタイプです、あなたが複製されたと思うものを捨てる自動方法はありません。

巨視的な問題が間違っていると思っているかもしれません(あるいは、そういう人のように定義されていて、やる必要があるかもしれません)。両方の列挙型に共通の特性を持っていると思いますか?そうすれば、あなたのメソッドは列挙型を受け取ることができます(Enumeration.Valueが必要なので、動作しているかどうかはわかりません)...

その他のオプションは2in1タイプです。 [FilterDimensions、Filter2Dimensions]それを行うことができますが、私はcatsscalaz、またはshapelessほとんど確信しているのどちらかが、よりまともなタイプを持っている

私は多分あなたはそれが便利、スカラ座の列挙についてのいくつかのものを書きました。これは、ネイティブScalaの列挙にはいくつかの選択肢をカバーし、多分そのうちのいくつかは、あなたが必要とする機能を持っている:

  1. http://pedrorijo.com/blog/scala-enums/
  2. http://pedrorijo.com/blog/scala-enums-part2/
関連する問題