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变量里,这除了能让代码变得更短之外(至少减少了几个指令),还解开了两个原本应分离的关注点:首先是选择食物名称,其次才是打印它。