上一节中的模式匹配(匹配数组、列表、元组),这些功能的背后是提取器(Extractor)机制——带有从对象中提取值的unapply或unapplySeq方法的对象。unapply方法用于提取固定数量的对象;而unapplySeq提取的是一个序列。

提取器:从表达式中获取具体值

一、Extractor实战解析

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")}match_array(Array(0))  //模式匹配在工作的时候会提取出数组中的值0,并和case中的情况比较。提取器的参数是Array(0)match_array(Array(0,1))  //提取器提取出0,赋值给x;提取出1,赋值给ymatch_array(Array(0,1,2,3,4,5))//用正则表达式来提取分组的数据val pattern = "([0-9]+) ([a-z]+)".r"29288 nihao" match{case pattern(num, item) => println(num + " " + item)}

输出:

Array:0
Array 0 1
Array 0...
29288 nihao

Tuple : 函数或方法返回不止一个值。用提取器可以从这几个值中分别提取出每一个值,并赋值给tuple的每一个相应的元素

二、Extractor源码解析

以下是Array类中的unapplySeq方法的源码

def unapplySeq[T](x: Array[T]): Option[IndexedSeq[T]] =if (x == null) None else Some(x.toIndexedSeq)
}

参考资料来源于大数据梦工厂 深入浅出scala 第28讲 由王家林老师讲解

28.Scala提取器Extractor实战详解相关推荐

  1. Scala 提取器(Extractor)

    提取器: 1.其实伴生对象有两个方法 ,A: apply     B : unapply方法 2.我们使用apply方法来构造我们的一个对象, 不需要使用new关键字了.对吧. 3.我们使用unapp ...

  2. 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)

    目录 提取器(Extractor) 定义提取器 提取器(Extractor)  我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量.例如: // ...

  3. 《数据修复技术与典型实例实战详解》——1.4 分区表的修复

    本节书摘来自异步社区<数据修复技术与典型实例实战详解>一书中的第1章,第1.4节,作者:叶润华著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 分区表的修 ...

  4. 第8课:彻底实战详解使用IDE开发Spark程序

    第8课:彻底实战详解使用IDE开发Spark程序 1.下载安装windows下的scala-2.10.4. 2.打开eclipse,新建scala project: WordCount 3.修改依赖的 ...

  5. 第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行

    第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行 拷贝WordCount.scala生成WordCountCluster.scala. 1. 将object WordCount改为ob ...

  6. 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例

    本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...

  7. python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...

  8. 《Java和Android开发实战详解》——2.2节构建Java应用程序

    本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  9. scala 提取器模式匹配_Scala提取器应用,取消应用和模式匹配

    scala 提取器模式匹配 Scala extractor is an object which has a method called unapply as one of its members. ...

  10. Android网络开发技术实战详解

    <Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...

最新文章

  1. 基于Eclipse的TI集成开发环境IDE-CCSv5使用教程
  2. qsql 关联_(十八)链接数据库,QSqlTableModel
  3. .难忘的大学时光·~~~~~
  4. 深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)
  5. putty的基本使用
  6. 今天被BSE指摘了2个问题,感觉很典型
  7. 软件2.0时代来了!特斯拉AI负责人说:神经网络正在改变编程
  8. 多线程往文件里写数据
  9. 我的天!你竟然没有在SpringBoot中使用过异步请求和异步调用...
  10. 基于FTP4J组件的FTP操作客户端
  11. OpenCV 与 OpenGL 的关系是什么?
  12. 文献管理三剑客之Noteexpress:更新一次文献后把文献自动插一次
  13. 锤子发布会2018的四个环节概述
  14. 漂浮广告代码、漂浮代码分析(讲解)
  15. 用C++语言写游戏——打飞机
  16. MFC添加界面的背景图片方法总结
  17. 英语生疏了,每日至少一句吧
  18. WinEdt编译提示pdf文件打不开,Cannot Run pdf
  19. 电脑系统时间同步问题处理
  20. Linux下命令行使用技巧

热门文章

  1. Pixi.js文档笔记-起步
  2. docker限制cpu、内存使用
  3. 查找/分析Windows蓝屏DMP文件
  4. 下载百度文库任意文档
  5. 【控制篇 / 策略】(5.4) ❀ 03. Explicit Web Proxy 显式web代理 ❀ FortiGate 防火墙
  6. JS中var、let以及const关键字到底怎么用?
  7. ZZUOJ 公主与骑士 (BFS)
  8. “反悔”贪心 烤鸡翅
  9. 图书管理系统设计总结与心得
  10. Android 点击键盘外 非输入框 关闭软键盘