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 .

¿Fue útil?

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 .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top