Inhaltsverzeichnis | 4 |
Vorwort | 8 |
Kapitel 1 – Warum Scala? | 10 |
1.1Was ist Scala? | 10 |
1.2Warum Scala statt Java? | 11 |
1.3Warum Scala statt Groovy, JRuby & Co? | 15 |
Kapitel 2 – Entwicklungsumgebung | 16 |
2.1Kommandozeilen-Werkzeuge | 16 |
2.1.1scalac und fsc | 17 |
2.1.2scala | 19 |
2.1.3scaladoc | 20 |
2.2Build-Werkzeuge | 20 |
2.2.1Ant | 21 |
2.2.2Maven | 22 |
2.2.3SBT | 23 |
2.3IDEs | 26 |
2.3.1Scala IDE for Eclipse | 27 |
2.3.2IntelliJ IDEA | 28 |
Kapitel 3 – Das Fallbeispiel „ScalaTrain“ | 30 |
Kapitel 4 – Erste Gehversuche in der REPL | 32 |
4.1Variablen | 32 |
4.1.1Unveränderliche Variablen | 32 |
4.1.2Veränderliche Variablen | 34 |
4.2Methoden | 34 |
4.2.1Alles hat ein Ergebnis | 34 |
4.2.2Unit-Methoden | 36 |
4.3Funktionen | 37 |
Kapitel 5 – OO-Grundlagen | 40 |
5.1Vorbereitung: Projekt initialisieren | 40 |
5.2Klassen | 41 |
5.2.1Klassenparameter und Konstruktoren | 42 |
5.2.2Felder | 44 |
5.2.3Methoden | 46 |
5.2.4Named and Default Arguments | 49 |
5.3Packages und Sichtbarkeit | 50 |
5.3.1Verschachtelte Packages | 51 |
5.3.2Imports | 52 |
5.3.3Sichtbarkeit | 53 |
5.4Singleton Objects | 54 |
5.4.1Companion Objects | 55 |
5.4.2Predef | 55 |
5.5Case Classes | 56 |
5.6Projekt-Code: aktueller Stand | 59 |
Kapitel 6 – Testen von Scala-Programmen | 60 |
6.1 Unit-Tests mit specs | 60 |
6.1.1Vorbereitung: Dependencies verwalten mit SBT | 60 |
6.1.2Testfälle einfach gemacht | 63 |
6.1.3Testdaten einfach gemacht | 65 |
6.2Test Coverage mit scct | 67 |
6.3Projekt-Code: aktueller Stand | 70 |
Kapitel 7 – Erste Schritte mit FP | 72 |
7.1Scala-Collections | 73 |
7.1.1Klassenhierarchie | 73 |
7.1.2Collection-Instanzen erzeugen | 74 |
7.1.3Typ-Parameter | 75 |
7.1.4Tupel | 76 |
7.1.5Unveränderliche und veränderliche Collections | 77 |
7.1.6Collections in ScalaTrain | 79 |
7.2Funktionale Collections | 80 |
7.2.1Funktionsliterale | 80 |
7.2.2Funktions-Typen | 82 |
7.2.3Funktionale Collections in ScalaTrain | 84 |
7.2.4map, flatMap und filter im Detail | 89 |
7.3For Expressions und For Loops | 92 |
7.3.1For Expressions | 94 |
7.3.2For Loops und foreach | 97 |
7.4Projekt-Code: aktueller Stand | 99 |
Kapitel 8 – Vererbung und Traits | 100 |
8.1Vererbung | 100 |
8.1.1Sub-Klassen mit extends definieren | 100 |
8.1.2Member überschreiben | 103 |
8.1.3Abstrakte Klassen und Member | 106 |
8.1.4Scala-Typhierarchie | 109 |
8.2Traits | 111 |
8.2.1Traits hinein mixen | 113 |
8.2.2Linearisierung | 114 |
8.2.3Beispiel: Ordered implementieren | 117 |
8.2.4Einschub: By-Name Parameters | 118 |
8.2.5Self Types | 120 |
8.3Abschluss – Aktueller Stand | 122 |
Kapitel 9 – Pattern Matching | 126 |
9.1match-Ausdrücke | 126 |
9.2Welche Pattern gibt es? | 127 |
9.2.1Wildcard Pattern | 127 |
9.2.2Constant Pattern | 127 |
9.2.3Variable Pattern und Typed Pattern | 127 |
9.2.4Tuple Pattern | 128 |
9.2.5Constructor Pattern | 128 |
9.2.6Sequence Pattern | 130 |
9.3Pattern Guards und Variable Binding | 131 |
9.4Pattern Matching außerhalb von match-Ausdrücken | 132 |
9.5Projekt-Code: aktueller Stand | 133 |
Kapitel 10 – Scala und XML | 136 |
10.1XML-Literale | 136 |
10.2XML-Verarbeitung | 137 |
10.3XML für ScalaTrain | 139 |
10.4Abschluss – Aktueller Stand | 140 |
Kapitel 11 – Implicits | 142 |
11.1Implicit Conversions | 142 |
11.1.1Implicit Conversions zum Expected Type | 143 |
11.1.2Implicit Conversions des Receivers | 145 |
11.2Implicit Parameters | 148 |
11.3Type Classes | 151 |
11.4Projekt-Code: aktueller Stand | 154 |
Kapitel 12 – Fortgeschrittene Konzepte | 158 |
12.1Rekursion | 158 |
12.2Upper Bounds und View Bounds | 161 |
12.2.1Einschub: Package Objects | 161 |
12.2.2Einschub: Varianz | 162 |
12.2.3Upper Bounds | 163 |
12.2.4View Bounds | 164 |
12.3Existential Types | 165 |
12.4Vertiefung objekt-funktionale Programmierung | 167 |
12.4.1Problemstellung | 167 |
12.4.2Lösungsansatz | 168 |
12.4.3Streckenabschnitte ermitteln | 170 |
12.5Verbindungen ermitteln | 173 |
12.6Abschluss – Aktueller Stand | 175 |
Kapitel 13 – Scala Libraries | 180 |
13.1Validieren mit scalaz | 180 |
13.2Web-Applikationen mit Lift | 185 |
13.2.1Lift-Konfiguration | 186 |
13.2.2View First | 187 |
13.2.3Snippets | 190 |
13.3Abschluss – Endgültiger Stand | 193 |
Stichwortverzeichnis | 200 |