Mi aspetto che questo mi dia un errore di tipo dal (String, String)
nel caso else
non è Pair
.Perché questo non dà un errore di tipo?
case class Pair(x: String, y: String)
val value = Console.readLine.toBoolean
val Pair(x, y) =
if (value) Pair("foo", "bar")
else false
Invece, se entro falso, ottengo il seguente errore in fase di esecuzione.
scala.MatchError: (foo,bar) (of class scala.Tuple2)
Suppongo che la decostruzione è solo zucchero per assegnare il risultato a una variabile di tipo Any
e poi di corrispondenza su di esso, ma sembra un peccato che Scala lascia questa mosca.
Ho bisogno di ricordare questo comando ('scalac')! – schmmd
È bello saperlo, ma non penso che il supertipo comune di "Prodotto" sia il motivo per cui viene compilato. Ho cambiato il mio esempio per mostrarlo, anche se entrambi hanno ancora un super tipo comune di 'Any'! – schmmd