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表達式的每一個備選項不但能夠經過打印輸出值,還能夠只生成返回值而不打印,這更符合函數式編程的要求。函數