2017-12-10 3 views
1

私はスカラーが新しく、外部ソースによって文字列列挙型から取り出された正しい大文字小文字クラス(特性に適合する)を作成するためのスカラーを探しています。ソースが外部であるため、入力が正しいという妥当な検証が必要であり、有効な入力があれば正しいケースクラスが返されます。私は、これは与えられた形質のオプションのケースクラスを返す「工場」であることを前提となり文字列からケースオブジェクトを作成するためのscala "factory"デザインパターン

例:

trait ProcessingMechanism 
case object PMv1 extends ProcessingMechanism 
case object PMv2 extends ProcessingMechanism 
case object PMv3 extends ProcessingMechanism 
... 
... 
私は正しいProcessingMechanism

すなわちを返すために工場を持っていると思い

object ProcessingMechanismFactory { 
    ... switch on the input string to return the correct mechanism??? 
    ... is there a simple way to do this? 
} 
+1

'シールされた特性 'を持っているなら、https://stackoverflow.com/q/13671734質問が役立つかもしれません。あなたがライブラリを探しているなら、おそらくhttps://github.com/lloydmeta/enumeratumが今日最も人気があります。 –

答えて

1

マクロや外部ライブラリに頼ることなく、あなたがこのような単純な何かを行うことができますが。

質問のコメントに示唆されているように、形質をsealedとマークする方が良いでしょう。

関連する問題