您的位置:首页 > 其它

第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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: