一、基础语法
变量/表达式 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