match case

49 阅读1分钟

一、基础语法

变量/表达式 match {

case 匹配条件1 => 执行逻辑1

case 匹配条件2 => 执行逻辑2

case _ => 默认逻辑(匹配所有未命中的情况,类似switch的default) }

//    val code = "42"
//    var privince = ""

//    if(code == "42"){
//      privince = "湖北"
//  } else if(code == "11") {
//      var province = ""

//      if(code == "42"){
val code = "11"
val province = code match {
  case "42" => "湖北"
  case "11" => "北京"
  case _ => "未知"

}
println(s"${code} 对应的省份是:${province}")

二:基本功能

1. 基础值匹配(替代 switch)

val num = 2
num match {
  case 1 => println("数字1")
  case 2 => println("数字2")
  case 3 => println("数字3")
  case _ => println("其他数字") // 兜底逻辑
}
// 输出:数字2

2. 类型匹配

匹配不同的数据类型,适合处理多类型参数的场景:

def matchType(x: Any): String = x match {
  case s: String => s"字符串:$s"
  case i: Int => s"整数:$i"
  case d: Double => s"浮点数:$d"
  case _ => "未知类型"
}

println(matchType("Scala")) // 输出:字符串:Scala
println(matchType(100))     // 输出:整数:100

3. 集合匹配

匹配列表、元组等集合的结构:

// 列表匹配
val list = List("语文", 87)
list match {
  case List("语文", score) => println(s"语文分数:$score")
  case List("数学", score) => println(s"数学分数:$score")
  case _ => println("未知科目")
}
// 输出:语文分数:87

// 元组匹配
val tuple = ("李娜", 95)
tuple match {
  case (name, score) => println(s"$name的英语分数:$score")
  case _ => println("格式错误")
}
// 输出:李娜的英语分数:95