¿Hay alguna forma de analizar automáticamente un objeto de una cadena, en Scala? ¿Usando alguna función Scala incorporada/generada automáticamente?¿Construido en el análisis de una secuencia a un objeto de caso de Scala?
Por ejemplo, tengo objetos estos casos: (tenga en cuenta que hay una clase padre sellado)
abstract sealed class FlagReason
case object Spam extends FlagReason
case object Illegal extends FlagReason
case object CopyrightViolation extends FlagReason
case object Other extends FlagReason
y me pregunto si hay alguna función generada de forma automática que funciona como:
FlagReason.fromString(value: String): FlagReason
donde FlagReason("Spam")
devolvería el objeto de caso Spam
.
Si lo hubiera, entonces no necesito escribir mi propia - lo que he hecho:
object FlagReason {
def fromString(value: String): FlagReason = value match {
case "Spam" => Spam
case "Illegal" => Illegal
case "CopyrightViolation" => CopyrightViolation
case "Other" => Other
}
}
Antecedentes: Estoy convirtiendo mi caso se opone a las cadenas que utilizo como valores de botón de opción en forma de html Estoy convirtiendo el valor seleccionado a un objeto caso, cuando manejo el formulario enviado.
Información relacionada: Esto es realmente posible con las enumeraciones de Java, consulte p. Ej. esta pregunta de StackOverflow: Lookup enum by string value
((No creo que esté buscando los Combinators del Analizador de Scala. Supongo que si los utilizo, igual tendré que definir las reglas de análisis, en lugar de haber incorporado "automática" conversión de objeto de cadena a caja))
Nota, que muestra su enlace C# enumeraciones. Por cierto, ¿puede proporcionar un escenario, donde realmente necesita esa característica? – agilesteel
@agilesteel: he arreglado el enlace ahora, gracias. También agregué algo de información sobre por qué hago ese tipo de conversión. – KajMagnus