This is an excerpt from the Scala Cookbook (#ad) (partially modified for the internet). This is one of the shorter recipes, Recipe 3.10, “How to access the value of the default case in a Scala match
expression.”
Problem
You want to access the value of the default, “catch all” case when using a Scala 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:
i match { case 0 => println("1") case 1 => println("2") case default => 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
:
i match { case 0 => println("1") case 1 => println("2") case whoa => 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 ...
this post is sponsored by my books: | |||
![]() #1 New Release |
![]() FP Best Seller |
![]() Learn Scala 3 |
![]() Learn FP Fast |