Scala: Perché posso convertire Int all'unità?
Domanda
Di recente ho iniziato a giocare con Scala (2.8) e ho notato la posso scrivere il seguente codice (in Scala Interpreter):
scala> var x : Unit = 10
x : Unit = ()
Non è evidente che cosa sta succedendo lì. Io davvero non mi aspettavo di vedere alcuna conversione implicita a Unità .
Soluzione
Vedere la sezione "6.26.1 valore Conversioni" nella Scala Specifica del linguaggio versione 2.8:
...
Valore smaltimento. Se e
ha un certo tipo di valore e il tipo previsto è Unità, e
è convertito
al tipo previsto dalla incorporarlo nel termine { e; () }
.
...
Altri suggerimenti
Tutto può essere convertito in unità. Ciò è per lo più necessario per supportare i metodi lateralmente effettuare comunque che restituiscono valori, ma in cui il valore di ritorno è spesso ignorato. Per esempio
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
}
Bene, tutto può essere convertito in unità (che è il suo scopo). Si può pensare di unità come unità nel reticolo di (sotto) tipi, il che significa che è un supertipo di tutto. Vedere Wikipedia articolo .