第77讲:模式匹配下的提取器过程分析

概要

所谓模式匹配下的提取器,就是模式匹配与提取器的结合。
关于提取器可以参考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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值