根据身份证开头,输出籍贯信息
基础代码
object matchcase01 {
def main(args: Array[String]): Unit = {
val code = 12
val province = code match {
case 42 => "湖北省"
case 52 => "四川省"
case _ => "未知"
}
println(province)
}
}
match case的基本使用
要点
- 如果能精准匹配成功,就会执行后面的代码。
- case _ 它表示可以匹配任意的内容。一定要放在match case 的最后一条。
- case _ 不能省略:如果匹配不成功,就会报错。
基本代码
object matchcase02 {
def main(args: Array[String]): Unit = {
val code = 10
code match {
case 1 =>println("one")
case 2 =>println("two")
case 3 =>println("three")
case _ =>println("未知")
}
}
}
元组元素数量
要点
- 匹配精准值
- 匹配数据类型
- 匹配元素的个数
基本代码
object matchcase03 {
def processValue(value:Any):Unit={
value match {
case x: Int => println("Int")
case x: String => println("String")
case _ => println("other")
}
}
def processNum(value:Any):Unit={
value match {
case (a,b,c) => println(s"三个元素的元组,第一个元素是${a}")
case (x,y) => println("两个元素的元组")
case _ => println("其他")
}
}
def main(args: Array[String]): Unit = {
processNum((1,2))
processNum((1,2,3))
}
}
匹配元素个数及其特征
基本代码
object matchcase04 {
def matchArray(arr:Any):Unit={
arr match {
case Array(x,y) => println("匹配到有两个元素的数组",x,y)
case Array(1,b,c) => println("匹配到有三个元素的数组,第一个元素是1")
case Array(a,b,c) => println("匹配到有三个元素的数组",a,b,c)
case Array(10,_*) => println("第一个元素是10,元素的个数有任意个")
case _ => println("没有匹配到")
}
}
def main(args: Array[String]): Unit = {
val arr1=Array(1,2,3)
val arr2=Array(2,2,3)
val arr3=Array(10,2,3,1)
matchArray(arr1)
matchArray(arr2)
matchArray(arr3)
}
}
匹配案例类
基本代码
object matchcase05 {
case class Circle(r:Double)
case class Rectangle(w:Double,h:Double)
def calculateArea(shape: Any): Double = {
shape match {
case Circle(r) => 3.14 * r * r
case Rectangle(w, h) => w * h
case _ => 0.0
}
}
def main(args: Array[String]): Unit = {
val circle=Circle(2.0)
val rectangle=Rectangle(2.0,3.0)
println(calculateArea(circle))
println(calculateArea(rectangle))
}
}
变量声明时的匹配
基本代码
object matchcase06 {
def main(args: Array[String]): Unit = {
val arr=Array(11,22,33,4,5)
val Array(x,y,z,_*) =arr
println(x,y,z)
}
}