[Scala Tour] 3-Unified Type – TOUR OF SCALA SiFou

不言
Freigeben: 2023-03-22 19:20:01
Original
1669 Leute haben es durchsucht

In Scala haben alle Werte einen Typ, einschließlich Zahlen und Funktionen. Die folgende Abbildung zeigt eine Teilmenge der Typhierarchie.

[Scala Tour] 3-Unified Type – TOUR OF SCALA SiFou

Scala-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))
Nach dem Login kopieren

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>
Nach dem Login kopieren

Typkonvertierung

Werttypen können auf folgende Arten konvertiert werden:

[Scala Tour] 3-Unified Type – TOUR OF SCALA SiFou

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
Nach dem Login kopieren

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
Nach dem Login kopieren

Sie können einen Referenztyp auch in einen Untertyp konvertieren. Dies wird in einem späteren Artikel behandelt.

Nothing und Null

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage