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 ...


沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...