模式匹配(2)scala 里是怎么实现的?

栏目: Scala · 发布时间: 6年前

内容简介:模式匹配(2)scala 里是怎么实现的?

参考博客: http://hongjiang.info/scala-pattern-matching-2/

文章中提到的有6种实现模式匹配的方法:

1.面向对象的分解 (decomposition)

2.访问器模式 (visitor)

3.类型测试/类型造型 (type-test/type-cast)

4.typecase

5.样本类 (case class)

6.抽取器 (extractor)

我直接说结果了,,,,

scala 直接选择了 样本类(case class)和抽取器(extractor)来实现模式匹配

样本类(case class):

case class实际上是scala的语法糖。case class 创建的类型,同时还帮你生成好了 一系列相应的方法,如:toString,hashCode,等方法。

最重要的是帮我们生成了一个伴生对象。这个伴生对象中定义了apply()和unapply 方法、

apply 方法 主要用于构建对象时使用,减少使用new 关键字。构造(工厂模式)

unappy 方法则是为模式匹配所服务。解构(解构模式)

case class 在模式匹配的时候暴露了其构造方法。所以当我们只想把类型暴露给用户,其内部数据表征想对其隐藏时,不宜使用。

抽取器(extractor):

抽取器是指定义了unapply方法的object。在进行模式匹配的时候会调用该方法。

unapply方法接受一个数据类型,返回另一数据类型,表示可以把入参的数据解构为返回的数据。

比如:

模式匹配(2)scala 里是怎么实现的? 模式匹配(2)scala 里是怎么实现的?

模式匹配(2)scala 里是怎么实现的?

它与上面的case class相比,相当于自己手动实现unapply,这也带来了灵活性。

其就可以解决上面case class 不想暴露具体的类型的缺陷了。如下代码具体讲解了其是怎么实现的:

模式匹配(2)scala 里是怎么实现的?

模式匹配(2)scala 里是怎么实现的?


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

产品经理修炼之道

产品经理修炼之道

费杰 / 机械工业出版社华章公司 / 2012-7-30 / 59.00元

本书由资深产品经理、中国最大的产品经理沙龙Pmcaff创始人费杰亲自执笔,微软、腾讯、百度、新浪、搜狐、奇虎、阿里云、Evernote等国内外20余家大型互联网企业资深产品经理和技术专家联袂推荐。用系统化的方法论和丰富的实战案例解读了优秀产品经理所必须修炼的产品规划能力、产品设计能力、产品执行能力,以及思考、分析和解决问题的能力和方法,旨在为互联网产品经理打造核心竞争力提供实践指导。 全书一......一起来看看 《产品经理修炼之道》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具