scala学习十四 模式匹配
来源:互联网 发布:阿里云qq群 编辑:程序博客网 时间:2024/04/28 03:53
模式匹配详解:
package matchtest;class matchtest { var d:Int=0; def mat(a: Int) { a match { case 1 => print(a + "*" * a+"第一个方法") case ch if Character.isDigit(ch) => print("自动赋值给ch"+ch); case _ => print("默认的方法,如果上面的都没有匹配"); } }}object matchtest extends App{ val matest=new matchtest matest.mat('1')}
package matchtest;class matchtest { var d:Int=0; def mat(a: Int) { a match { case 1 => print(a + "*" * a+"第一个方法") case ch if Character.isDigit(ch) => print("自动赋值给ch"+ch); case _ => print("默认的方法,如果上面的都没有匹配"); } } def mat2(ref:Any){ ref match { case a:Int =>print("这个是int") case b:String =>print("这个是string") case _ =>print("这个不再匹配的范围") } }}object matchtest extends App{ val matest=new matchtest matest.mat2("ssss")}
注意:当要使用模式匹配去匹配特定的map是:Map[ int,String ] 别这样做,应为jvm在运行时会擦出类型信息,但是做一个统一的匹配是可以的 case m:Map[ _, _ ] =>xxxx
def mat3(a: Array[Any]) { a match { case Array(0) => { print("匹配包含0这个元素的数组") } case Array(x, y) => { print("匹配只包含两个元素的数组") } case Array(x, _*) => { print("匹配以0开头的数组") } } } def mat4(a: List[Any]) { a match { case 0 :: Nil => { print("匹配包含0这个元素的数组") } case x :: y :: Nil => { print("匹配只包含两个元素的数组") } case 0 :: tail => { print("匹配以0开头的数组") } case _ =>print("默认匹配") } }
样例类的作用(匹配具体的子类,在给出具体的行为):
package matchtestclass accountcase class account1(double: Double) extends accountcase class account2(double: Double, double2: Double) extends accountcase object Nothing extends accountclass acco { def mat(acc: account) { acc match { case account1(a) => print("a"+a) case account2(a, b) => print("a:"+ a + "b"+b) case _ => print("xxx") } }}当在使用样例类进行匹配的时候,可能需要编译器帮助盘但样例类是否全面,则需要在基类前加 sealed 关键字
package matchtestsealed class account //加了sealed 在对account的扩展只有在本文件有效case class account1(double: Double) extends accountcase class account2(double: Double, double2: Double) extends accountcase object Nothing extends accountclass acco { def mat(acc: account) { acc match { case account1(a) => print("a"+a) case account2(a, b) => print("a:"+ a + "b"+b) case _ => print("xxx") } }}
0 0
- scala学习十四 模式匹配
- [Scala]Scala学习笔记十 模式匹配
- scala学习之模式匹配
- Scala学习笔记--模式匹配
- scala学习之模式匹配
- scala学习之模式匹配
- scala学习手记- 模式匹配
- Scala学习—模式匹配
- Scala学习之模式匹配
- Spark学习笔记4-Scala模式匹配
- 学习scala的点点滴滴-模式匹配
- scala学习笔记之模式匹配
- Scala学习笔记之模式匹配
- scala学习:scala中的模式匹配入门实战
- Scala学习笔记19【Scala模式匹配入门实战】
- Scala学习笔记21【Scala List之模式匹配实战】
- scala 正则匹配(模式匹配)
- scala简要:模式匹配
- uiautomator uidevice dumpWindowHierarchy无法保存xml文件的bug
- mysql_fetch_array()函数
- nignx 405
- redis
- 软件测试题一
- scala学习十四 模式匹配
- unordered_set的find,count效率 和赋值
- android Fragment
- mac 显示及隐藏文件的方法
- Cocos2d3.0之 action的用法从一个故事说起
- Android自动化测试(UiAutomator)简要介绍
- 各种算法OID
- 二分图 UVA 1459 Flowers Placement
- 操作系统知识点整理(1)