Beschreibung
Als funktionale Programmiersprache bietet Scala natürlich Funktionen (auch
Lambdas genannt). In diesem Kursblock wird die Syntax von
Funktionsdefinitionen, von Funktionstypen und von Funktionsaufrufen
vermittelt. Funktionen werden auch mit den ähnlichen und doch so anderen
Methoden verglichen.
Auch das Zusammensetzen bestehender Funktionen zu neuen Funktionen wird
gezeigt. Implicits sind das hervorstechendste und ein
Alleinstellungsmerkmal von Scala. Nicht immer sehr einfach zu benutzen,
sind sie doch ein sehr mächtiges und - wenn man sie beherrscht - sehr
nützliches Feature dieser Programmiersprache. An Implicits scheiden sich
die Geister der Scala-Befürworter und -Gegner.
Sie lassen sich sehr leicht missbräuchlich verwenden und können dann das
Programmdesign eher verschlechtern. Sie können auch vieles vereinfachen und
werden insbesondere bei der Entwicklung von Bibliotheken häufig verwendet.
Scala-Entwickler/innen begegnen Implicits auf Schritt und Tritt.
Deshalb ist ihr Verständnis unabdingbar. Scala hat eine sehr reichhaltige
Collection Library, in der klar zwischen mutable und immutable Collections
unterschieden wird. Immutability ist eine zentrale funktionale Eigenschaft.
Immutable Collections stehen deshalb für den Scala-Entwickler und in diesem
Kurs im Vordergrund.
Dennoch kann er bei Bedarf (insbesondere in performance-kritischen
Bereichen) auf die mutable Collections zugreifen. Am Ende des Seminars sind
die Teilnehmer/innen in der Lage, Scala Implicits für kontextuelle
Abstraktionen zu verwenden und die Möglichkeiten und Risiken von Implicits
richtig einzuschätzen. Sie können Funktionen benutzen und haben einen guten
Überblick über die vielfältige Collection Library.
Außerdem wissen sie, Java-Bibliotheken und Java-Collections in Scala zu
verwenden. Optional werden die fortgeschrittene Fehlerbehandlung, die
Möglichkeiten von fold, Value Classes und String Interpolation behandelt.
Die Kurse Basics I und Basics II (oder ein entsprechender, gleichwertiger
Kenntnisstand) bilden die Grundvoraussetzung für alle weiteren Module
unseres Scala-Kursprogramms.