內建控制結構之匹配(match)表達式

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語句只能使用整數類型和枚舉常量。另外一個區別是在每一個備選項的最後並無breakBreak是隱含的,也就是說,不容許從上一個備選項落入到下一個裏面去。
然而,與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表達式的每一個備選項不但能夠經過打印輸出值,還能夠只生成返回值而不打印,這更符合函數式編程的要求。函數

相關文章
相關標籤/搜索