Frage

Ich habe mit Scala seit kurzem spielen (2.8) und bemerkte, das kann ich den folgenden Code (in der Scala Interpreter) schreiben:

scala> var x : Unit = 10
x : Unit = ()

Es ist nicht klar, was dort vor sich geht. Ich habe nicht erwartet, wirklich jede implizite Konvertierung zu sehen Einheit .

War es hilfreich?

Lösung

Siehe Abschnitt "6.26.1 Wert Conversions" in Scala Language Specification Version 2.8:

...

Wert Discarding. Wenn e einen Wert Typ hat und die erwartete Typ ist Einheit, e ist umgewandelte auf die erwartete Art, indem sie in dem Begriff { e; () } Einbettung.

...

Andere Tipps

Alles kann zu Einheit umgewandelt werden. Dies ist vor allem notwendig, Neben Bewirkung Methoden zu unterstützen, die dennoch Werte zurückgeben, aber wo der Rückgabewert wird oft ignoriert. Zum Beispiel

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
}

Nun, alles kann zu Einheit umgewandelt werden (das ist ihr Zweck). Sie können im Gitter von (Teil-) Typen als Einheit von Einheit denken, was bedeutet, es ist ein übergeordneter Typ von allem ist. Siehe Wikipedia-Artikel .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top