3.10. Accessing the Value of the Default Case in a Match Expression
Problem
You want to access the value of the default, “catch all” case when
using a match expression, but you can’t access the value when you match
it with the _ wildcard
syntax.
Solution
Instead of using the _ wildcard
character, assign a variable name to the default case:
imatch{case0=>println("1")case1=>println("2")casedefault=>println("You gave me: "+default)}
By giving the default match a variable name, you can access the variable on the right side of the statement.
Discussion
The key to this recipe is in using a variable name for the default
match instead of the usual _ wildcard
character.
The name you assign can be any legal variable name, so instead of
naming it default, you can name it
something else, such as whoa:
imatch{case0=>println("1")case1=>println("2")casewhoa=>println("You gave me: "+whoa)}
It’s important to provide a default match. Failure to do so can
cause a MatchError:
scala>3 match {|case 1 => println("one")|case 2 => println("two")| // no default match |}scala.MatchError: 3 (of class java.lang.Integer) many more lines of output ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access