内建控制结构之匹配(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表达式的每一个备选项不但能够经过打印输出值,还能够只生成返回值而不打印,这更符合函数式编程的要求。函数

相关文章
相关标签/搜索