scala-30:模式匹配高级实战:嵌套的Case class
2015-12-20 14:47
441 查看
内容:
1、嵌套的Case class与模式匹配结合实战解析
2、Case object 实战解析
Case class Bundle中使用了嵌套case class,items,类型Item*表示有若干个扩展参数或类型,也可以为Book或者Bundle。
因为Bundle中嵌套了items类型的Book,所以提取器提取到Book中的descr并将其打印
第二点非常方便:即使用@符号来引用当前匹配到的对象。
art引用了Book对象的属性,函数体中执行打印的时候,art可以直接调用Book中属性description和price。
1、嵌套的Case class与模式匹配结合实战解析
2、Case object 实战解析
<span style="white-space:pre"> </span>abstract class Item <span style="white-space:pre"> </span>case class Book(description: String, price: Double) extends Item <span style="white-space:pre"> </span>case class Bundle(description: String, price: Double, items: Item*) extends Item <span style="white-space:pre"> </span>object Pattern_Match_Case_Class_Nested
Case class Bundle中使用了嵌套case class,items,类型Item*表示有若干个扩展参数或类型,也可以为Book或者Bundle。
case Bundle(_, _, Book(descr, _), _*) => println("The first description is :" + descr) case _ => println("Oops!") } caseclass_nested(Bundle("1111 Special's", 30.0, <span style="white-space:pre"> </span> Book("Scala for the Spark Developer", 69.95), <span style="white-space:pre"> </span> Bundle("Hadoop", 40.0, <span style="white-space:pre"> </span> Book("Hive", 79.95), <span style="white-space:pre"> </span> Book("HBase", 32.95) )
因为Bundle中嵌套了items类型的Book,所以提取器提取到Book中的descr并将其打印
第二点非常方便:即使用@符号来引用当前匹配到的对象。
<span style="white-space:pre"> </span>case Bundle(_, _, art @ Book(_, _), rest @ _*) => println(art.description + " : " + art.price)
art引用了Book对象的属性,函数体中执行打印的时候,art可以直接调用Book中属性description和price。
相关文章推荐
- (3)HTML5的表单新特性
- Python 网络爬虫单线程版
- Android异步处理——Handler、Looper、Message、MessageQueue
- android6.0权限管理工具EasyPermissionUtil
- hadoop集群搭建与测试编码
- javascript 倒计时
- 第十五周学习报告
- 配置maven环境变量
- hive的安装与简单配置
- 虚拟机中linux系统启动的tomcat无法在本机访问的问题
- javascript 简单实现时钟
- mac apache php相关
- 周总结
- 77. PHP 文件读取
- python 返回的json格式转换
- Linux学期总结
- 【杭电】[2011]多项式求和
- C#之异步编程
- 项目中oracle存储过程记录——经常使用语法备忘
- 设计模式(十七)---门面模式