Scala中,模式匹配可以匹配所有的字面量,包括字符串,字符,数字,布尔值等等。

  1. object TestMatchVal {
  2. def main(args: Array[String]): Unit = {
  3. println(describe(6))
  4. }
  5. def describe(x: Any) = x match {
  6. case 5 => "Int five"
  7. case "hello" => "String hello"
  8. case true => "Boolean true"
  9. case '+' => "Char +"
  10. }
  11. }

匹配变量和常量

  def main(args: Array[String]): Unit = {
    val a: Any = "abc"
    a match {
      case 20 => println(20)
      // aa 是case语句里面新生成的变量,aa几乎可以接收所有的类型
      case aa => println(aa)
    }

执行main函数之后输出:

abc

case后面的变量如果是大写的字母开头的话,那么Scala会认为这是一个常量,并且必须是已经定义好的常量.所以在编写变量的时候一定要注意不能是大写字母开头的(首字母是大写).不然就会被Scala当成常量了.

  def main(args: Array[String]): Unit = {

    val Ba = 20
    val a = 20
    a match {
      case Ba => println(a)
      case _ =>
    }
  }