Scala: ¿Por qué puedo convertir Int a la Unidad?
Pregunta
He recientemente empezó a jugar con Scala (2,8) y la cuenta de la que pueda escribir el siguiente código (en el Scala Intérprete):
scala> var x : Unit = 10
x : Unit = ()
No es obvio lo que está pasando allí. Realmente no esperaba ver ninguna conversión implícita a Unidad .
Solución
Vea la sección "6.26.1 Valor Conversiones" en la Scala especificación del lenguaje versión 2.8:
...
Valor descarte. Si e
tiene algún tipo de valor y el tipo esperado es Unidad, se convierte e
con el tipo esperado por incrustarlo en el término { e; () }
.
...
Otros consejos
Cualquier cosa se puede convertir en la unidad. Esto es sobre todo necesaria para apoyar los métodos de efectuar laterales que, no obstante, los valores de retorno, pero donde a menudo se ignora el valor de retorno. Por ejemplo
import java.util.{List =>JList}
def remove2[A](foo: JList[A], a1:A, a2:A):Unit = {
foo.remove(a1)
foo.remove(a2) //if you couldn't convert the (usually pointless) return value of remove to Unit, this wouldn't type
}
Bueno, nada se puede convertir a la unidad (que es su propósito). Se puede pensar en la unidad como unidad en el entramado de (sub) tipos, lo que significa que es un supertipo de todo. Ver artículo de Wikipedia .