scala学习之内建控制结构->匹配(match)表达式

scala的match表达式类似于其它程序设计语言的switch语句

 

代码:

val firstArg = if(args.length > 0) args(0) else ""
firstArg match {
 case "salt" => println("pepper")
 case "chips" => println("salsa")
 case "eggs" => println("bacon")
 case _ => println("huh?")
}

该语句实现了从参数列表读食物名,然后打印事物配料

与java的switch相比,区别有几点:

1、任何类型的常量,都能当成scala里做比较用的样本(case),而不只是Java的case语句里面的整数类型和枚举常量,在上边这个例子里,备选项是字符创

2、在每个备选项的最后并没有break,这样可以避免一些错误产生的根源

3、最显著的差别是:match表达式也能产生值。上面的例子里,match表达式的每个备选项不但可以通过打印输出值,还可以只生成返回值而不打印,具体见下边的代码实现:

val firstArg = if(args.length > 0) args(0) else ""
val friend =
 firstArg match {
  case "salt" => "pepper"
  case "chips" => "salsa"
  case "eggs" => "bacon"
  case _ => "huh?"
 }
println(friend)

match表达式生成返回值并存储在friend变量里,这除了能让代码变得更短之外(至少减少了几个指令),还解开了两个原本应分离的关注点:首先是选择食物名称,其次才是打印它。

你可能感兴趣的:(scala学习之内建控制结构->匹配(match)表达式)