In Scala haben alle Werte einen Typ, einschließlich Zahlen und Funktionen. Die folgende Abbildung zeigt eine Teilmenge der Typhierarchie.
Any
Ein Typ ist der übergeordnete Typ aller Typen, auch als oberste Ebene bekannt Typ. Es definiert einige gängige Methoden wie equals
, hashCode
und toString
. Any
hat zwei direkte Unterklassen: AnyVal
und AnyRef
.
AnyVal
stellt den Werttyp dar. Es gibt 9 vordefinierte Werttypen, die nicht nullbar sind: Double
, Float
, Long
, Int
, Short
, Byte
, Char
, Unit
und Boolean
. Unit
ist ein Werttyp ohne Bedeutung. Nur eine Instanz von Unit
kann wie folgt deklariert werden: ()
. Alle Funktionen müssen einen Wert zurückgeben, daher ist Unit
ein nützlicher Rückgabetyp.
AnyRef
stellt einen Referenztyp dar. Alle Nichtwerttypen werden als Referenztypen definiert. Jeder benutzerdefinierte Typ in Scala ist ein Untertyp von AnyRef
. Wenn Scala innerhalb einer Java-Laufzeitumgebung verwendet wird, entspricht AnyRef
Java.lang.object
.
Hier ist ein Beispiel, das zeigt, dass Zeichenfolgen, Ganzzahlen, Zeichen, Boolesche Werte und Funktionen alle Objekte wie andere Objekte sind:
val list: List[Any] = List( "a string", 732, // an integer 'c', // a character true, // a boolean value () => "an anonymous function returning a string" ) list.foreach(element => println(element))
Es definiert den Typ List[Any]
Liste von Variablen. Die Liste wird mit Elementen verschiedener Typen initialisiert, aber sie sind alle Instanzen von scala.Any
, sodass Sie sie alle zur Liste hinzufügen können.
Das Folgende ist die Ausgabe des Programms:
a string 732 c true <function>
Werttypen können auf folgende Arten konvertiert werden:
Zum Beispiel:
val x: Long = 987654321 val y: Float = x // 9.8765434E8 (note that some precision is lost in this case) val face: Char = '☺' val number: Int = face // 9786
Die Konvertierung erfolgt in eine Richtung. Die letzte Anweisung unten lässt sich nicht kompilieren:
val x: Long = 987654321 val y: Float = x // 9.8765434E8 val z: Long = y // Does not conform
Sie können einen Referenztyp auch in einen Untertyp konvertieren. Dies wird in einem späteren Artikel behandelt.
Nothing
sind Untertypen aller Typen, auch als Bottom-Typen bekannt. Typ Nothing
hat keinen Wert. Übliche Verwendungszwecke bestehen darin, eine Nichtbeendigung zu signalisieren, z. B. das Auslösen einer Ausnahme, einen Programmabbruch oder eine Endlosschleife (d. h. es handelt sich um einen Ausdruck, der keinen Wert ergibt, oder um eine Methode, die keinen normalen Wert zurückgibt).
Null
ist ein Untertyp aller Referenztypen (d. h. jeder Untertyp von AnyRef
). Es verfügt über einen einzelnen Wert, der durch das Schlüsselwort null
identifiziert wird. Null
wird hauptsächlich für die Interoperabilität mit anderen JVM-Sprachen verwendet und sollte fast nie in Scala-Code verwendet werden. Wir werden Alternativen zu null
in einem späteren Artikel behandeln.
Das obige ist der detaillierte Inhalt von[Scala Tour] 3-Unified Type – TOUR OF SCALA SiFou. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!