第77讲:模式匹配下的提取器过程分析
2015-08-09 11:06
211 查看
概要
所谓模式匹配下的提取器,就是模式匹配与提取器的结合。关于提取器可以参考scala 中的 提取器
示例代码
这里主要是通过 object 对象的 unapply 在模式匹配的应用object :>{ //定义提取器 :> def unapply[A](list:List[A]) = { Some(list.init,list.last) } } object Extractor_Pattern_Match { def main(args: Array[String]) { (1 to 9).toList match { case :>(_,9) => println("aa")} (1 to 9).toList match { case _ :> 9 => println("spark")} (1 to 9).toList match { case x :> 8 :>9 => println("hadoop") } (1 to 9).toList match { case :>(:>(_,8),9)=>println("flink")} } }
过程分析
当进行匹配时,调用提取器(:>) 的方法 unapply方法,输入参数:(1 to 9).toList
输出参数:Some(list.init,list.last) (这里结果为((1 to 8),9)
然后用输出参数与 case 语句比较
如 case :>(_,9) => println(“aa”) ,发现最后一个元素为9 ,满足要求 直接打印,就这个例子可以理解为
参入参数 必须是list 类型,同时要求 此list的最后一个元素为9
小技巧:
scala :表示是 右结合
:>( _,9) 与 _ :> 9 写法的功能相同
参考资料:
百度网盘:http://pan.baidu.com/share/home?uk=4013289088#category/type=0
微信号:18610086859
DT大数据微信公众账号:DT_Spark
DT大数据梦工厂交流群:462923555/418110145/437123764
相关文章推荐
- 新版CSS手册
- 过程 线 多线程 并发 同步异步
- Linux如何设置dns
- 用数组 和 链表 构建栈
- hdoj 2586 How far away ? 【LCA转RMQ入门题】
- PyDev for Eclipse 简介
- 关于异常
- [经典算法] 八枚硬币
- 取石子 斐波那契博弈 华为oj
- 黑马程序员——21,字符流FileReader,FileWriter,BufferedWriter,BufferedReader,装饰设计模式,LineNumberReader
- Ubuntu 配置tftp服务
- 一些程序员需要知道的资源
- MySQL的myisam引擎表锁优化
- 并查集详解
- 手机改座机
- linux 线程id 与进程id对应关系
- Spring的基本用法
- 用C#生成KML路径文件(下篇)
- UIViewController——Handling View-Related Notifications(处理与视图相关的通知)
- HDU 4985/BC 7A Little Pony and Permutation