Scala Grundkurs

Value-Typen

LinkedIn Learning kostenlos und unverbindlich testen!

Jetzt testen Alle Abonnements anzeigen
Value-Typen wie int, boolean usw. haben in Scala eine besondere Bedeutung und gehören zu den sogenannten Value-Datentypen. Verschaffen Sie sich in diesem Video dazu einen Überblick über die verschiedenen Typen.

Transkript

Typen sind der Grundpfeiler der Scala-Programmiersprache. Und Scala unterscheidet hier zwischen sogenannten Value-Typen und Referenz-Typen. Referenz-Typen bezeichnen üblicherweise Instanzen von Klassen, während Value-Typen sogenannte Basistypen sind. Wie genau die Value-Typen nun innerhalb von Scala einzuordnen sind, werde ich Ihnen nun demonstrieren. Zunächst einmal beginne ich nun innerhalb meiner IDE eine Nummer zu definieren. Das ist relativ einfach möglich durch die Zuweisung einer Zahl in eine Konstante, wie beispielsweise die Zahl 1. Standardmäßig erhalte ich hier nun also einen Integer. Nun gibt es auch Zahlen vom Datentyp "long". Um einen solchen Datentyp zu definieren, muss ich explizit mit dem Buchstaben "L" am Ende meiner Zahl dies im Compiler mitteilen. Alternativ kann ich auch zusätzlich den Typ angeben und damit vermeiden, den Buchstaben "L" an meine Zahl hinzuzufügen. Kommazahlen sind wie in Java, auch in Scala standardmäßig double-Werte, beispielsweise die Zahl 2,5. Um explizit zu sagen, dass es sich hier um einen double-Wert handelt, kann ich auch den Buchstaben "D" hinzufügen. Alternativ gibt es Kommazahlen in Form von einem sogenannten "float". Diese wird dann mit dem Buchstaben "F" definiert. Ein Double ist also üblicherweise eine Kommazahl mit doppelter Genauigkeit. Zu guter Letzt gibt es noch den "boolean", also eine Unterscheidung nach "true" oder "false". All das sind nun also Value-Datentypen vom Typ "AnyVal" aus Sicht von Scala. Dann gibt es noch String-Werte, wie beispielsweise einen Text. Ein Text ist nun kein Value-Datentyp, sondern eine Referenz, da es sich hier um eine Instanz der Klasse "string" handelt. Wenn ich also hier eine Typenprüfung mache innerhalb meines Println Befehls durch "text.isInstanceof" und dann "AnyRef", sollte ich hier einen Wert von "true" erhalten. Würde ich nun hingegen auf "AnyVal" statt "AnyRef" prüfen, so erhalte ich einen Fehler beim Starten der Anwendung, denn es ist nicht möglich, zu prüfen, ob die Instanz einer Klasse vom Typ "AnyVal" ist. Genauso wenig ist es möglich, zu prüfen, ob ein Value nun vom Typ "AnyVal" ist. Bei den Basistypen handelt es sich nun also nicht um Objekte, sondern um boolean, byte, char, short, int, long, float, double, also ganz konkret um Werte. Anders als in Java ist jeder dieser Werte automatisch mit seiner Klasse definiert. Das bedeutet, dass es keine Unterscheidung gibt zwischen Integer als Klasse und Integer als Wert. Das Boxing und Unboxing - eine Problematik aus der Java Virtual Machine - findet hierbei automatisch statt, und Scala versucht, die optimale Strategie hierfür auszuwählen. Bei der Angabe eines Datentyps hat man nun die Wahl zwischen einer expliziten Typdefinition, wie beispielsweise der Angabe des Datentyps "long" oder eines sogenannten Typappendix, wie beispielsweise den Bezeichner "L", den ich an meine Zahl hinzufüge. In einer Typenübersicht stellt sich das Ganze nun so dar. Zunächst einmal gibt es den Basistyp, der für alles steht. Dies ist der Typ "Any" in Scala. Möchte man nun also beispielsweise, dass eine Methode sowohl Value-Datentypen, als auch Referenz-Datentypen entgegennehmen kann, so würde man "Any" verwenden. Besteht man darauf, dass es sich um einen Value-Datentyp handelt, verwendet man "AnyVal", von dem nun all die Standard-Value-Datentypen erben. Im Gegensatz dazu gibt es in der Welt der Klassen das sogenannte "AnyRef". Dies ist vergleichbar mit dem "javalangObject" aus Java. Das bedeutet, aus Sicht von Scala sind alle Klassen, die innerhalb von Java beispielsweise erzeugt werden, immer vom Typ "AnyRef", was damit also synonym zum "javalangObject" zu verwenden ist. Richtige Scala-Klassen erben zusätzlich noch vom Scala-Objekt. Das bedeutet, alle Klassen, die zur Scala-Library gehören, wie beispielsweise "List" oder "Seq", als auch Klassen, die man selbst in Scala schreibt, erben zusätzlich vom Scala-Objekt. Zu guter Letzt seien noch drei wichtige Typen erwähnt: Zum einen der Scala-Typ "Null". "Null" bezeichnet hier nicht das "Null", das man aus Java kennt. Der Typ "Null" existiert nur formal und ist relevant für die Art und Weise, wie Scala mit der Java-Programmiersprache und speziell der JVM interagiert. "Nothing" hingegen hat eine tatsächliche Bedeutung. "Nothing" wäre zu verwenden, wenn man eine Methode konzipiert, die niemals einen Wert zurückliefert, sondern auf ewig läuft. Dieses Konstrukt sollte selbstverständlich nach Möglichkeiten vermieden werden. Zu guter Letzt gibt es noch den Typ "Unit". Dieser ist vergleichbar mit dem Java-Typ "Void". Er wird immer genau dann verwendet, wenn eine Methode keinen Rückgabewert hat. Da ein Scala standardmäßig alle Methoden, Funktionen sind und einen Rückgabewert haben, ist "Unit" explizit dafür geeignet, um eine Funktion als Methode zu deklarieren, indem man nun also den Rückgabewert als Unit definiert.

Scala Grundkurs

Entdecken Sie die Möglichkeiten und Eigenschaften der modernen Programmiersprache Scala.

4 Std. 44 min (39 Videos)
Derzeit sind keine Feedbacks vorhanden...
Software:
Exklusiv für Abo-Kunden
Erscheinungsdatum:12.04.2017

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!