Scala模式匹配、样例类

it2026-01-09  9

模式匹配

简单的匹配模式 //匹配模式(关键字:match) //传入参数a,匹配a的值,如果为1,输出aaa,如果为2,输出bbb,其他结果输出ccc def macth1(a: Int):Unit={ a match { case 1=>println("aaa") case 2=>println("bbb") case _=>println("ccc") } } 对Array数组进行模式匹配 //定义函数match2,传入String类型的数组参数 def match2(arr:Array[String])= arr match { //匹配数组中是否存在"张三" case Array("张三")=>println("hello,张三") //匹配元素为3个的数组 case Array(name1,name2,name3)=>println("hello,"+name1+","+name2+","+name3) //匹配开头为"李四"的数组 case Array("李四",_*)=>println("hello 李四*") //若以上都没有匹配成功,则进入这一项 case _=>println("你们是谁?") } var arr=Array("张三","李四","王五","老六") var arr2=Array("李四") var arr3=Array("张三","李四","王五") var arr4=Array("老六","张三","李四","王五") match2(arr) //hello,张三 match2(arr2) //hello 李四* match2(arr3) //hello,张三,李四,王五 match2(arr4) //你们是谁? 样例类与模式匹配配合使用 //定义类Person class Person //定义样例类aoteman继承Person类并且有两个属性, case class aoteman(name:String,age:Int) extends Person case class huluwa(name:String,age:Int) extends Person case class duolaAmen(name:String,age:Int) extends Person case class xiaozhupeiqi(name:String,age:Int) extends Person //定义方法matchTest,参数类型为Person //根据传入的参数p进行匹配 def matchTest(p:Person)=p match { //当传入的类型时aoteman,输出姓名+奥特曼 case p:aoteman=>println(p.name+"奥特曼") case p:huluwa=>println("葫芦娃"+p.name) case p:duolaAmen=>println("哆啦A梦") case p:xiaozhupeiqi=>println("小猪佩奇") case _=>println("你是什么?") } //创建aoteman类型 var aa=aoteman("迪迦",26) //调用函数传入参数aoteman match3(aa) //输出:迪迦奥特曼
最新回复(0)