1.匹配字符串
A => 1 B => 2 C => 3
//传统方法
def getNum(msg:String):Int={
if(msg=="A") 1
else if (msg=="B") 2
else if (msg=="C") 3
else 4
}
//模式匹配方法
def getNum(msg:String):Int={
msg match{
case "A" => 1
case "B" => 2
case "C" => 3
case _ => 4
}
}
getNum("B")
x
1
//传统方法
2
def getNum(msg:String):Int={
3
if(msg=="A") 1
4
else if (msg=="B") 2
5
else if (msg=="C") 3
6
else 4
7
}
8
//模式匹配方法
9
def getNum(msg:String):Int={
10
msg match{
11
case "A" => 1
12
case "B" => 2
13
case "C" => 3
14
case _ => 4
15
}
16
}
17
getNum("B")
2.匹配数组
var arr = Array(0,1,4)
var info=arr match {
case Array(0) => println(0)
case Array(x,y) => print(x,y)
case Array(0,_*) => print("_","*") //_* 代表多个数字,数目不确定
case _ => println("ANY")
}
1
var arr = Array(0,1,4)
2
var info=arr match {
3
case Array(0) => println(0)
4
case Array(x,y) => print(x,y)
5
case Array(0,_*) => print("_","*") //_* 代表多个数字,数目不确定
6
case _ => println("ANY")
7
}
3.样例类
class Dog
//其实这里是略写 Jing8(val age:Int)
case class Jing8(age:Int)
case class Bage(name:String) extends Dog
//apply 在样例类中是创建对象的
//unapply 在样例类当作是是取出属性的方法
//我们不再需要new 一个对象,在调用方法apply() 的时候
def ma(cl :Any): Unit ={
cl match {
case Jing8(age) => print(age)
case Bage(name) => println(name)
case _ => println("Any")
}
}
ma(Jing8(45)) //实际上这里传入的是一个对象的实例,使用了省略的apply方法,apply方法可以不用。出来就用
ma(Bage("Bage"))
x
1
class Dog
2
//其实这里是略写 Jing8(val age:Int)
3
case class Jing8(age:Int)
4
case class Bage(name:String) extends Dog
5
6
//apply 在样例类中是创建对象的
7
//unapply 在样例类当作是是取出属性的方法
8
//我们不再需要new 一个对象,在调用方法apply() 的时候
9
def ma(cl :Any): Unit ={
10
cl match {
11
case Jing8(age) => print(age)
12
case Bage(name) => println(name)
13
case _ => println("Any")
14
}
15
}
16
ma(Jing8(45)) //实际上这里传入的是一个对象的实例,使用了省略的apply方法,apply方法可以不用。出来就用
17
ma(Bage("Bage"))
18
//其实这里是略写 Jing8(val age:Int) 看到红线,给age 赋值编译报错
原文地址:https://www.cnblogs.com/feixiaobai/p/c2738b3907bf5c122662a658e69e3d5f.html
时间: 2024-10-11 14:08:24