Есть ли способ автоматически разобрать объект case из строки в 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")
вернет * case объект *. 1015 *
Еслибыло, тогда мне не нужно писать свой собственный - что я и сделал:
object FlagReason {
def fromString(value: String): FlagReason = value match {
case "Spam" => Spam
case "Illegal" => Illegal
case "CopyrightViolation" => CopyrightViolation
case "Other" => Other
}
}
Фон : я преобразую мои объекты case в строки, которые я использую в качестве переключателязначения в виде HTML.Я преобразовываю выбранное значение обратно в объект case, когда обрабатываю отправленную форму.
Информация, связанная с данной : Это действительно возможно с перечислениями Java, см., Например, этот вопрос StackOverflow: Поиск перечисления по строковому значению
((Я не думаю, что я ищу комбинаторы синтаксического анализатора Scala. Я полагаю, что если бы я использовал их, мне все равно нужно определить правила синтаксического анализая сам, а не встроил "автоматическую" конвертацию строки в объект case))