2011-10-11 14 views
5

Nel codice seguente, sto ottenendo un errore di compilazione affermando che ho un tipo non corrispondente su 'x':Auto-unboxing in Scala modello-partita

val someRef: java.lang.Long = 42L 
someRef match { 
    case x: Long => println("The answer: " + x) 
    case _ => println("Unknown") 
} 

Come faccio a Scala per l'auto-Unbox someRef nella dichiarazione della partita?

risposta

11

Il sistema di tipi non conosce il pugilato a questo livello. Ma sa che se c'è un Any, un Long in scatola è in realtà (presumibilmente) supposto essere solo un Long (dalla parte AnyVal dell'albero di ereditarietà della classe). Quindi:

val someRef: java.lang.Long = 42L 
(someRef: Any) match { 
    case x : Long => println("The answer is " + x) 
    case _ => println("What answer?") 
} 
+0

L'ha fatto. Grazie. – Ralph