me he encontrado atrapado en una cosa muy trivial: -]¿Cómo usar el interruptor/caja (coincidencia de patrón simple) en Scala?
Tengo una enumeración:
object Eny extends Enumeration {
type Eny = Value
val FOO, BAR, WOOZLE, DOOZLE = Value
}
En un código que tengo para convertirlo condicionalmente a un número (número varianr la correspondencia difiere según el contexto). Escribo:
val en = BAR
val num = en match {
case FOO => 4
case BAR => 5
case WOOZLE => 6
case DOOZLE => 7
}
Y esto me da un "código inalcanzable" error del compilador para cada rama, pero cualquiera que sea el primero ("caso FOO => 4" en este caso). ¿Qué estoy haciendo mal?
Mi conjetura es que "es" es "val" y se asigna a "BAR". No se puede reasignar más tarde, por lo que es igual a BAR en cualquier lugar después de dicha declaración. – Wildcat
Es un ejemplo simplificado, en el programa real "en" es el argumento de entrada de una función. De hecho, no se puede reasignar dentro, pero puede diferir de llamada a llamada. – Ivan
En ese caso, ¿quizás podrías dar un ejemplo menos simplificado? Tal como está, la respuesta es que da un error de "código inalcanzable" porque hay un código inalcanzable. –