概念
如果想要表达匹配某个范围的数据,就需要在模式匹配中增加条件守卫。
基本案例
def main(args: Array[String]): Unit = {
val a = 10
val b = 20
val op = StdIn.readLine("请输入一个运算符: ")
op match {
case "+" =>
println(a + b)
case "-" =>
println(a - b)
case "*" =>
println(a * b)
case "/" =>
println(a / b)
//需要注意的是这个需要写在最一个case分支.
case _ => println("你的运算符输入的不对!")
}
}
如果都匹配不上的话就走 case _ => println(“你的运算符输入的不对!”) 分支.
case _ 的含义
其实case _ 就是匹配任意的值,一般可以用来默认值.
下面main函数的意思是如果Ba等于a的话就输出a的值,否则就输出 “不等于” .
def main(args: Array[String]): Unit = {
val Ba = 25
val a = 20
a match {
case Ba => println(a)
case _ => println("不等于")
}
}
执行main函数的结果
不等于
模式匹配的返回值
任何的语法结构都有值! 模式匹配也也有值, 他的值就是匹配成功的那个case的最后一行代码的值
def main(args: Array[String]): Unit = {
val a = 10
val b = 20
val op = StdIn.readLine("请输入一个运算符: ")
val r = op match {
case "+" =>
a + b
case "-" =>
a - b
case "*" =>
a * b
case "/" =>
a / b
case _ => -1
}
println(r)
}
执行main函数之后:输出,
请输入一个运算符: +
30
为什么返回是30,因为我输入了 “+”,a和b的值相加就是30,然后这个case值返回 回来就是30,所以r就是30
如果随便输入的话,就返回的 -1
请输入一个运算符: asda
-1