28.Scala提取器Extractor实战详解
上一节中的模式匹配(匹配数组、列表、元组),这些功能的背后是提取器(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实战详解相关推荐
- Scala 提取器(Extractor)
提取器: 1.其实伴生对象有两个方法 ,A: apply B : unapply方法 2.我们使用apply方法来构造我们的一个对象, 不需要使用new关键字了.对吧. 3.我们使用unapp ...
- 2021年大数据常用语言Scala(三十五):scala高级用法 提取器(Extractor)
目录 提取器(Extractor) 定义提取器 提取器(Extractor) 我们之前已经使用过scala中非常强大的模式匹配功能了,通过模式匹配,我们可以快速匹配样例类中的成员变量.例如: // ...
- 《数据修复技术与典型实例实战详解》——1.4 分区表的修复
本节书摘来自异步社区<数据修复技术与典型实例实战详解>一书中的第1章,第1.4节,作者:叶润华著,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 分区表的修 ...
- 第8课:彻底实战详解使用IDE开发Spark程序
第8课:彻底实战详解使用IDE开发Spark程序 1.下载安装windows下的scala-2.10.4. 2.打开eclipse,新建scala project: WordCount 3.修改依赖的 ...
- 第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行
第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行 拷贝WordCount.scala生成WordCountCluster.scala. 1. 将object WordCount改为ob ...
- 《Unity 4 3D开发实战详解》一6.7 物理引擎综合案例
本节书摘来异步社区<Unity 4 3D开发实战详解>一书中的第6章,第6.7节,作者: 吴亚峰 , 杜化美 , 张月霞 , 索依娜 责编: 张涛,更多章节内容可以访问云栖社区" ...
- python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...
python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...
- 《Java和Android开发实战详解》——2.2节构建Java应用程序
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- scala 提取器模式匹配_Scala提取器应用,取消应用和模式匹配
scala 提取器模式匹配 Scala extractor is an object which has a method called unapply as one of its members. ...
- Android网络开发技术实战详解
<Android网络开发技术实战详解> 基本信息 作者: 朱桂英 丛书名: Android移动开发技术丛书 出版社:电子工业出版社 ISBN:9787121173493 上架时间:2012 ...
最新文章
- 基于Eclipse的TI集成开发环境IDE-CCSv5使用教程
- qsql 关联_(十八)链接数据库,QSqlTableModel
- .难忘的大学时光·~~~~~
- 深入理解字符编码(ASCII、Unicode、UTF-8、UTF-16、UTF-32)
- putty的基本使用
- 今天被BSE指摘了2个问题,感觉很典型
- 软件2.0时代来了!特斯拉AI负责人说:神经网络正在改变编程
- 多线程往文件里写数据
- 我的天!你竟然没有在SpringBoot中使用过异步请求和异步调用...
- 基于FTP4J组件的FTP操作客户端
- OpenCV 与 OpenGL 的关系是什么?
- 文献管理三剑客之Noteexpress:更新一次文献后把文献自动插一次
- 锤子发布会2018的四个环节概述
- 漂浮广告代码、漂浮代码分析(讲解)
- 用C++语言写游戏——打飞机
- MFC添加界面的背景图片方法总结
- 英语生疏了,每日至少一句吧
- WinEdt编译提示pdf文件打不开,Cannot Run pdf
- 电脑系统时间同步问题处理
- Linux下命令行使用技巧