Instalace potřebných nástrojů/Scaly a úvod
- Instalace Scala-cli
- Scala v InteliJ Idea (Scala plugin)
- Co je Scala, malá ukázka cílů a směrování kurzu is praktickými příklady
- Vytvoření projektu
Základní konstrukce jazyka a úvod do typů
- Měnitelné vs neměnitelné proměnné - princip immutable
- Základní typy: numerické, řetězce, pravdivostní hodnoty
- Podmínky a cykly
- For cyklus který vrací výsledek, teorie výrazů - co je výraz a co ne
- Funkce, rekurze, tail rekurze
- Interpolace řetězců
- Typ tuple, "rozbití" na proměnné, pattern matching
- Typ option jako jednoprvková kolekce, řetězení options ve for cyklu, Option(null)
- Dopis/Seq/Vector/Set/Map a operace nad nimi
- Mutable varianty kontejnerů
Operace nad kolekcemi
- foreach, map, flatMap
- rekurzivní počítání s kolekcemi, foldLeft, sum, reduce
- find, headOption, filtr, exists, contains, collect, groupBy, mkString
OOP ve Scale
- Třída a její atributy, konstruktor, companion object a apply
- case class, metoda copy, pattern matching
- Traity a vícenásobná dědičnost
- Anonymní třídy
- sealed trait a enumerace
Pokročilejší konstrukce jazyka
- Vyšší funkce, funkce jako parametr a návratová hodnota
- Kdy se kód skutečně zavolá/vyhodnotí?
- Lambdy
- Obalení primitivních hodnot do typů namísto přímého použití
- implicitní funkce, konverze
- implicitní třídy, doplňování metod
- implicitní hodnoty
- Try vs try
- Řetězení potencionálně neúspěšných operací ve for cyklu, recover, orElse
- Funkce s typovým parametrem
- Ohraničení typů
- Náš vlastní reduce
Asynchronní programování
- Future
- Await.ready/result
- Execution Context (global, fixed thread pool, cached, work stealing pool)
- Future neznamená thread, Co je to thread pool
- map, flatMap, skládání ve for cyklu
- andThen, recover, transform
- lazyness