scala-27:Type、Array、List、Tuple模式匹配实战解析
2015-12-20 14:24
489 查看
内容:
1、Type模式匹配实战解析
2、Array模式匹配实战解析
3、List模式匹配实战解析
4、Tuple模式匹配实战解析
(1)Type匹配
以上代码实现了不同类型数据的模式匹配,当为整形2的时候打印出“It is Integer”,当为map(_,_)集合的时候,执行函数体循环遍历打印出map的key和values值。
(2)Array数组的匹配
以上代码数组匹配的时候,数组的元素个数为一个时,打印出0,为多个的时候使用_*表示若干个元素,打印函数体println。
(3)List集合模式匹配
同上list有个元素时候Nil,2个元素x,y,3个以上元素为tail,然后执行函数体进行打印。
(4)Tuple(元组)模式匹配
Tuple有多重类型,不同数量,第一种占位符_表示有多种类型
1、Type模式匹配实战解析
2、Array模式匹配实战解析
3、List模式匹配实战解析
4、Tuple模式匹配实战解析
(1)Type匹配
def match_type(t : Any) = t match { case p : Int => println("It is Integer") case p : String => println("It is String, the content is : " + p) case m: Map[_, _] => m.foreach(println) case _ => println("Unknown type!!!") } match_type(2) match_type("Spark") match_type(Map("Scala" -> "Spark"))
以上代码实现了不同类型数据的模式匹配,当为整形2的时候打印出“It is Integer”,当为map(_,_)集合的时候,执行函数体循环遍历打印出map的key和values值。
(2)Array数组的匹配
def match_array(arr : Any) = arr match { case Array(0) => println("Array:" + "0") case Array(x, y) => println("Array:" + x + " " +y) case Array(0, _*) => println("Array:" + "0 ...") case _ => println("something else") }
<p> match_array(Array(0))</p><p><span style="white-space:pre"> </span> match_array(Array(0,1))</p>
以上代码数组匹配的时候,数组的元素个数为一个时,打印出0,为多个的时候使用_*表示若干个元素,打印函数体println。
(3)List集合模式匹配
def match_list(lst : Any) = lst match { case 0 :: Nil => println("List:" + "0") case x :: y :: Nil => println("List:" + x + " " + y) case 0 :: tail => println("List:" + "0 ...") case _ => println("something else") } match_list(List(0)) match_list(List(3,4)) match_list(List(0,1,2,3,4,5))
同上list有个元素时候Nil,2个元素x,y,3个以上元素为tail,然后执行函数体进行打印。
(4)Tuple(元组)模式匹配
def match_tuple(tuple : Any) = tuple match { case (0, _) => println("Tuple:" + "0") case (x, 0) => println("Tuple:" + x ) case _ => println("something else") } match_tuple((0,"Scala")) match_tuple((2,0)) match_tuple((0,1,2,3,4,5))
Tuple有多重类型,不同数量,第一种占位符_表示有多种类型
相关文章推荐
- ns2编程小技巧
- Quartz.Net CronExpression表达式详解
- Java 实现堆排序
- js 格式化显示固定小数位
- CentOS7下安装Redis
- Kafka
- Ext.js5表单的文件上传(toast)(30)
- html5中地理位置定位api接口开发应用:
- (1)HTML 5提供的一些新的标签用法以及和HTML 4的区别
- Block 再学习 !
- git fetch.git merge,git pull
- Python基础教程 第9章: 魔法方法、属性和迭代器 学习笔记
- Android-2015年度技术总结
- 认识SQLSERVER中sysobjects表
- Redis消息通知系统的实现
- LeetCode 019 Remove Nth Node From End of List
- query did not return a unique result: 3 错误
- C语言字符串与数字互转
- Wordpress siteurl的问题导致无法登陆
- Matlab与Python的语法比较