2011-10-11 12 views
5

En el siguiente código, que estoy recibiendo un error de compilación que indica que tengo una coincidencia de tipos de 'x':auto-unboxing en Scala patrón-partido

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

¿Cómo llego Scala para auto-unbox someRef en la declaración del partido?

Respuesta

11

El sistema de tipos no sabe nada del boxeo en este nivel. Pero sí sabe que si hay un Any, se supone que (realmente) se supone que Long es solo Long (de la AnyVal parte del árbol de herencia de clase). Entonces:

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

Eso lo hizo. Gracias. – Ralph