Scala Match 表達式

2018-09-28 18:23 更新

Match 表達式

Scala 的 Match 表達式支持從多個選擇中選取其一,類似其它語言中的 switch 語句。通常來說,Scala 的 match 表達式支持任意的匹配模式,這種基本模式將在后面介紹,本篇介紹類似 switch 用法的 match 表達式,也是在多個選項中選擇其一。

例如下面的例子從參數(shù)中讀取食品的名稱,然后根據(jù)食品的名稱,打印出該和該食品搭配的食品,比如輸入 ”salt”,與之對應的食品為”pepper”。如果是”chips”,那么搭配的就是“salsa”等等。

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 相比有幾點不同:
一是任何類型的常量都可以用在 case 語句中,而不僅僅是 int 或是枚舉類型。
二是每個 case 語句無需使用 break,Scala不支持“fall through”。
三是 Scala 的缺省匹配為”_”,其作用類似 java 中的 default。

而最關鍵的一點是 scala 的 match 表達式有返回值,上面的代碼使用的是 println 打印,而實際上你可以使用表達式,比如修改上面的代碼如下:

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

這段代碼和前面的代碼是等效的,不同的是后面這段代碼 match 表達式返回結果。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號