[Scala]Scala学习笔记九 提取器
来源:互联网 发布:七夕电影全部数据 编辑:程序博客网 时间:2024/05/19 15:22
1. apply和update方法
Scala允许你使用如下函数调用语法:
扩展到可以应用于函数之外的值.如果f不是函数或方法,那么这个表达式就等同于调用:
如果它出现在赋值语句的等号左侧:
则等同于调用:
应用场景:
(1) 常被用于数组和映射:
(2) 同样经常用在伴生对象中,用来构造对象而不用显示的使用new:
2. 提取器
所谓提取器就是一个带有unapply方法的对象.可以把unapply方法理解为伴生对象中apply方法的反向操作.apply方法接受构造参数,然后将他们变成对象.而unapply方法接受一个对象,然后从中提取值(通常这些值就是当初用来构造该对象的值).
例如上面例子中的Fraction类,apply方法从分子和分母创建出一个分数,而unapply方法则是去取出分子和分母:
(1) 可以在变量定义时使用:
(2) 也可以用于模式匹配:
通常而言,模式匹配可能会失败,因此unapply方法返回的是一个Option.它包含一个元组,每个匹配到的变量各有一个值与之对应.下面中返回一个Option[(Int, Int)]
备注
在上面例子中,apply和unapply互为反向,但不一定总是互为反向.我们可以用提取器从任何类型的对象中提取信息.例如我们可以从字符串中提取名字和姓氏:
3. 带单个参数或无参数的提取器
在Scala中,并没有只带一个组件的元组.如果unapply方法要提取单值,则应该返回一个目标类型的Option:
可以使用这个提取器,从字符串中提取数字:
提取器也可以只是测试输入的数据而并不将其值提取出来,只需unapply方法返回Boolean:
4. unapplySeq方法
如果要提取任意长度的值的序列,我们需要使用unapplySeq来命名我们的方法.它返回一个Option[Seq[A]],其中A是被提取的值的类型:
- [Scala]Scala学习笔记九 提取器
- Scala学习笔记(九) - 包和引用
- Scala学习笔记(九) - 包和引用
- Scala学习笔记(九) - 包和引用
- scala学习笔记(九) 特质
- Scala基础教程(九):提取器、文件I/O
- 使用Scala提取器
- Scala 提取器
- Scala 提取器(Extractor)
- Scala 提取器(Extractor)
- Scala:提取器(Extractor)
- Scala 提取器(Extractor)
- Scala提取器
- scala 提取器
- scala中的提取器
- scala提取器详解
- scala样例类提取器
- Scala学习笔记(九)----用=>进行方法定义
- python局部变量和全局变量
- JNI 技巧
- 正则表达式学习笔记
- lightoj-1289(数论+素数打表)
- 软件测试黑马工程师-----QTP自动化测试
- [Scala]Scala学习笔记九 提取器
- oracle数据逻辑备份
- 经典的同步问题(银行取钱)
- POJ-3685---Matrix (二分)
- C
- HDU 6060 RXD and dividing【斯坦纳树】
- Centos7 Oracle 11g安装文档
- LeetCode No.19 Remove Nth Node From End of List
- JQuery动画