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