Scala中,模式匹配可以匹配所有的字面量,包括字符串,字符,数字,布尔值等等。
object TestMatchVal {
def main(args: Array[String]): Unit = {
println(describe(6))
}
def describe(x: Any) = x match {
case 5 => "Int five"
case "hello" => "String hello"
case true => "Boolean true"
case '+' => "Char +"
}
}
匹配变量和常量
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 _ =>
}
}