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à .

È stato utile?

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 .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top