Scala的match表达式相似于其余语言中的switch语句,它能够提供给你在多个备选项中作选择。基本上match表达式能够让你使用任意的模式(pattern)做选择。详细状况咱们后面再介绍,目前只要考虑使用switch在若干备选项中作选择。如例:java
package scalaTest object Test7 { def main(args:Array[String]):Unit = { val firstArg = "salt" firstArg match{ case "salt" => println("pepper") case "chips" => println(salsa") case "eggs" => println("bacon") case _ => println("huh?") } } }
结果:编程
如上例,默认状况用下划线(_),这是经常使用在scala里做占位符来表达未知值的通配符,在这里至关于java中switch的default。与java的switch语句相比,匹配表达式还有一些重要的差异。其中之一是任何类型的常量,都能当成scala里作比较用的样本(case),而不仅是java的case语句只能使用整数类型和枚举常量。另外一个区别是在每一个备选项的最后并无break。Break是隐含的,也就是说,不容许从上一个备选项落入到下一个里面去。
然而,与java的switch相比,最显著的差异或许是match表达式也能产生值。如例:函数式编程
package scalaTest object Test7 { def main(args:Array[String]):Unit = { val firstArg = "eggs" val friend = firstArg match{ case "salt" => "pepper" case "chips" => "salsa" case "eggs" => "bacon" case _ => "huh?" } println("match也是表达式,见示例结果: " + friend) } }
上面的例子,match表达式的每一个备选项不但能够经过打印输出值,还能够只生成返回值而不打印,这更符合函数式编程的要求。函数