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")
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") }
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"))
//其实这里是略写 Jing8(val age:Int) 看到红线,给age 赋值编译报错
![](https://img2018.cnblogs.com/blog/1497695/201903/1497695-20190310221711529-566590540.png)
《快学Scala》高清中文PDF+源代码
提取码:an5d
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步