Inštalácia potrebných nástrojov/Scaly a úvod
- Inštalácia Scala-cli
- Scala v InteliJ Idea (Scala plugin)
- Čo je Scala, malá ukážka cieľov a smerovania kurzu aj s praktickými príkladmi
- Vytvorenie projektu
Základné konštrukcie jazyka a úvod do typov
- Meniteľné vs nemeniteľné premenné - princíp immutable
- Základné typy: numerické, reťazce, pravdivostné hodnoty
- Podmienky a cykly
- For cyklus ktorý vracia výsledok, teória výrazov - čo je výraz a čo nie
- Funkcie, rekurzia, tail rekurzia
- Interpolácia reťazcov
- Typ tuple, "rozbitie" na premenné, pattern matching
- Typ option ako jednoprvková kolekcia, reťazenie options vo for cykle, Option(null)
- List/Seq/Vector/Set/Map a operácie nad nimi
- Mutable varianty kontajnerov
Operácie nad kolekciami
- foreach, map, flatMap
- rekurzívne počítanie s kolekciami, foldLeft, sum, reduce
- find, headOption, filter, exists, contains, collect, groupBy, mkString
OOP v Scale
- Trieda a jej atribúty, konštruktor, companion object a apply
- case class, metóda copy, pattern matching
- Traity a viacnásobná dedičnosť
- Anonymné triedy
- sealed trait a enumerácie
Pokročilejšie konštrukcie jazyka
- Vyššie funkcie, funkcia ako parameter a návratová hodnota
- Kedy sa kód skutočne zavolá/vyhodnotí?
- Lambdy
- Obalenie primitívnych hodnôt do typov namiesto priameho použitia
- implicitné funkcie, konverzie
- implicitné triedy, doplňanie metód
- implicitné hodnoty
- Try vs try
- Reťazenie potencionálne neúspešných operácii vo for cykle, recover, orElse
- Funkcia s typovým parametrom
- Ohraničenie typov
- Náš vlastný reduce
Asynchrónne programovanie
- Future
- Await.ready/result
- Execution Context (global, fixed thread pool, cached, work stealing pool)
- Future neznamená thread, Čo je to thread pool
- map, flatMap, skladanie vo for cykle
- andThen, recover, transform
- lazyness