- we're gonna use Scala 2.13.9 becuase of Spark (latest Scala version is currently 3.4.1 see https://www.scala-lang.org/download/all.html)
Topics:
- vals/vars, lazy
- statement vs expression, if-expr
- functions and named arguments
- for-comprehensions vs flatmapping
- throws vs Try/Either/Option
- generics, variance, Unit
- traits, final case classes, companion objects
- extension methods in scala 2
- implicits in scala 2
- package objects (e.g. in testing)
- multi-word identifiers (e.g. in tests, constants)
- single-argument functione e.g. Try{...}
- immutable vs mutable containers
- update() syntax sugar
- apply method
- variable arguments + expanding a collection in place of varargs
- logging
- scala-testing
Other topics not covered here:
- collections, futures, type classes, akka, zio, cats
- opaque types (scala 3) / value classes (scala 2)
- tagless final
Master Workers Cluster, Serialization, Plans, Jobs, Tasks, Web Console Spark SQL, Dataframes vs Datatypes
- Enumerations
- MdmsDecimal