13.1 模式匹配的基本使用
package com.atguigu.day11.moshipipei
object MatchDemo {
def main(args: Array[String]): Unit = {
var a1 = 10
var a2 = 20
var res = 0
var operChar = "0"
operChar match {
case "+" => {
res = a1 + a2
}
case "-" => {
res = a1 - a2
}
case "*" => {
res = a1 * a2
}
case "/" => {
res = a1 / a2
}
case _ => println("你是运算符有误")
}
println("res = " + res)
}
}
说明:
如果所有
case
都不匹配,那么会执行case _
分支,类似于 Java 中default
语句如果所有
case
都不匹配,又没有写case _
分支,那么会抛出MatchError
每个
case
中,不用break
语句,自动中断case
可以
在match
中使用其它类型(任意类型),而不仅仅是字符=>
等价于 javaswtich
的:
=>
后面的代码块到下一个case
, 是作为一个整体执行,可以使用{}
扩起来,也可以不括
模式匹配的值
模式匹配是表达式, 所以也有自己值(在 scala 中任何语法结构都有值)
上面的可以简化:
package com.atguigu.day11.moshipipei
object MatchDemo2 {
def main(args: Array[String]): Unit = {
var a1 = 10
var a2 = 20
var operChar = "*"
val res = operChar match {
case "+" => a1 + a2
case "-" => a1 - a2
case "*" => a1 * a2
case "/" => a1 / a2
case _ => "你的运算符负不正确"
}
println("res = " + res)
}
}