Pattern matching
We use pattern matching to execute code on a case-by-case basis. Take a look at the following:
val somelist = List(1,2,3) somelist match { case Nil => Nil case _ => ??? }
By taking a look at the structure of our pattern match expression, we see a few things. First, we execute a match on some value followed by the match
keyword and then we put cases. For each case we specify some patterns. Now, the pattern can be a constant value, a variable, or even a constructor. We'll soon have a look at all of these patterns. Pattern matching also allows us to put guards on our match in the form of a condition. In that case, the pattern will only match if the condition is applicable. If you take a look at the previous toy example about somelist
, you'll see there's an _
underscore. It's called a wildcard pattern. It'll match all values or patterns against the case. Logically, you can't put another case after a wildcard. For example, the following does not make any sense...