Esperaría que esto me diera un error de tipo ya que (String, String)
en el caso else
no es Pair
.¿Por qué esto no da un tipo de error?
case class Pair(x: String, y: String)
val value = Console.readLine.toBoolean
val Pair(x, y) =
if (value) Pair("foo", "bar")
else false
En cambio, si ingreso falso, aparece el siguiente error en el tiempo de ejecución.
scala.MatchError: (foo,bar) (of class scala.Tuple2)
supongo que la deconstrucción es sólo azúcar para asignar el resultado a una variable de tipo Any
y luego a juego en él, pero parece lamentable que Scala permite esta mosca.
Necesito recordar este comando ('scalac')! – schmmd
Es bueno saberlo, pero no creo que el supertipo común de 'Producto' sea el que compila. Cambié mi ejemplo para mostrar esto, ¡aunque ambos todavía tienen un súper tipo común de 'Any'! – schmmd