match case模式匹配
match case
1.匹配精确值
2.匹配数据类型
3.匹配元素的个数
4.匹配元素个数,元素特征
5.匹配案例类
6.变量声明时的匹配
package matchcase
object matchase01 {
//42->湖北省
//52->四川省
def main(args: Array[String]): Unit = {
// val code = 42
// var province = ""
// if(code == 42) {
// province = "湖北省"
// }else if (code == 52){
// province ="四川"
// }else{
// province = "未知"
// }
//
val code = 12
val province = code match {
case 42 => "湖北省"
case 52 => "四川省"
case _ => "未知"
}
println(province)
}
}
其中if语句为:
val code = 42
// var province = ""
// if(code == 42) {
// province = "湖北省"
// }else if (code == 52){
// province ="四川"
// }else{
// province = "未知"
// }
eg1:
输入1,输出单词one
输入2,输出单词two
输入3,输出单词three
输入其他,输出单词other
1.如果能精准匹配成功,就会执行后面的代码
2.case _ 他可以表示匹配任意的内容。一定要放在match case 的最后一条
3.case _不能省略:如果匹配不成功,就会报错
package matchcase
object matchase02 {
def main(args: Array[String]): Unit = {
//输入1,输出单词one
//输入2,输出单词two
//输入3,输出单词three
//输入其他,输出单词other
//1.如果能精准匹配成功,就会执行后面的代码
//2.case _ 他可以表示匹配任意的内容。一定要放在match case 的最后一条
//3.case _不能省略:如果匹配不成功,就会报错
//1.从键盘获取数字
val code = 10
//2.使用matchcase进行匹配
code match {
case _ => println("未知")
case 1 => println("one")
case 2 => println("two")
}
}
}
匹配元素个数,元素特征
package matchcase
//match case
//1.匹配精确值
//2.匹配数据类型
//3.匹配元素的个数
//4.匹配元素个数,元素特征
object matchase04 {
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)
}
}
变量声明时的匹配
package matchcase
//match case
//1.匹配精确值
//2.匹配数据类型
//3.匹配元素的个数
//4.匹配元素个数,元素特征
//5.匹配案例类
//6.变量声明时的匹配
object matchase06 {
def main(args: Array[String]): Unit = {
val arr = Array(11,22,33,4,5)
//定义3个变量:x,y,z保存数组中的前三个元素的值
//val x = arr(0)
//val y = arr(1)
//val z = arr(2)
val Array(x,y,z, _*) = arr
println(x,y,z)
}
}