- val/var/def/lazy
- String/Int
- object/trait/class (abstract?)
- Constructor and public values
- The apply method / everything is a function (e.g. +)
- Companion object
- case class
- apply / copy
- Tuples
- ScalaTest
- sbt
- sbt run / sbt test
- open sbt console
- open idea scratch
- Write a case class containing a position and a username (both are strings)
- Write a function to replace the position
- Obviously with tests (verify the original case class wasn't changed)
- add a counter field that counts how many times the object changed position
- Add a new case class that only contains the username
- both case classes need to implement the same trait (trait contains the username)
- if
- Match
- Collections
- List
- Monads
- Either
- Try
- Option
- for-comprehension
https://github.com/trayio/scala-be-interview/blob/master/task5/src/main/scala/io/tray/UserScoreService.scala https://github.com/trayio/scala-be-interview/blob/master/task1/src/main/scala/io/tray/services/WorkflowService.scala
- Implicits
- currying
- partial function
- Futures
- Value Classes
- Tagged types
- Pure config