文字列からケースオブジェクトを自動的に解析する方法はありますか?内蔵の/自動生成されたScala関数を使用していますか?Scalaのcaseオブジェクトに文字列を解析する機能が組み込まれていますか?
例えば、私は、これらのケースは、オブジェクトを持っている:
:abstract sealed class FlagReason
case object Spam extends FlagReason
case object Illegal extends FlagReason
case object CopyrightViolation extends FlagReason
case object Other extends FlagReason
と同じように動作し、いくつかの自動生成機能があります場合、私は思ったんだけど(は、密閉された親クラスがあることに注意してください)
FlagReason.fromString(value: String): FlagReason
FlagReason("Spam")
は、Spam
ケースオブジェクトを返します。
があった場合は、その後、私は自分を書く必要はありません - 私がやったどの:
object FlagReason {
def fromString(value: String): FlagReason = value match {
case "Spam" => Spam
case "Illegal" => Illegal
case "CopyrightViolation" => CopyrightViolation
case "Other" => Other
}
}
背景:私はラジオボタンの値として使用した文字列に私の場合オブジェクトを変換していますがHTML形式で送信されたフォームを処理すると、選択した値をケースオブジェクトに変換しています。
関連情報:これは実際にはJavaの列挙型で可能です。このStackOverflowの質問:Lookup enum by string value
(私はスカラーのパーサーコンビネータを探しているとは思いませんが、私はそれを使用していたと思います。 "自動"文字列からケースへのオブジェクト変換))
注意、あなたのリンクは、C#の列挙型を示すこと。 Btw、あなたは実際にそのような機能が必要なシナリオを提供できますか? – agilesteel
@agilesteel:今、リンクを修正しました。ありがとうございます。なぜ私はそのような変換を行うのかについての情報を追加しました。 – KajMagnus