程式扎記: [Scala 文章收集] How to access the value of the default case in a Scala match expression

標籤

2016年9月3日 星期六

[Scala 文章收集] How to access the value of the default case in a Scala match expression

Source From Here
Preface
This is an excerpt from the Scala Cookbook (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 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:
  1. i match {  
  2.     case 0 => println("1")  
  3.     case 1 => println("2")  
  4.     case default => println("You gave me: " + default)  
  5. }  
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:
  1. i match {  
  2.     case 0 => println("1")  
  3.     case 1 => println("2")  
  4.     case whoa => println("You gave me: " + whoa)  
  5. }  
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 ...


沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!