Easy one today.
We are going to see how the concepts of unapply, pattern matching and Option work together.
Under the hood Option is a sealed trait that we saw before. It has two implementations: Some and None.
The Some has an unapply method that let you extract the value out. You can see it being used in case Some(n) =>. The None do not since it defines the case when the Option is empty.
On the pattern matching sides of things, because it is a sealed trait, the compiler knows how many possible cases there are: 2. If you remove the Some case or the None one, the compiler will give you a warning related to the completeness of the match cases.