Chapter 5. Scala Type System
In the previous chapter, we covered how to work with lists, which made us familiar with some design principles of the whole collections library. We also covered how to generalize to sequences and covered some more relevant data structures. Finally, we also covered how collections relate to monads and how we can use that knowledge to use some powerful abstractions in our code.
In this chapter, we will
cover the
type
system and polymorphism. We will also cover the different types of variance, which provides a way to constrain parameterized types. Finally, we will cover some advanced
types
such as abstract type members, option, and so on.
Scala is statically typed. This means that the type of variables are known at compile time. The main advantage of statically typed languages is that a lot of checks can be done by the compiler, thus increasing the number of trivial bugs that are caught at an early stage. Statically typed languages are also friendlier to refactoring...