博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Scala模式匹配的亮点——Martin Odersky访谈(四)
阅读量:5734 次
发布时间:2019-06-18

本文共 1145 字,大约阅读时间需要 3 分钟。

Martin Odersky向Bill Venners和Frank Sommers谈论Scala模式匹配的机制和目的。

\\

Scala是一种新兴的通用用途、类型安全的Java平台语言,结合了面向对象和函数式编程。它是洛桑联邦理工大学教授Martin Odersky的心血结晶。本访谈系列由多部分组成,由Artima网站的Frank Sommers和Bill Venners向Martin Odersky讨教Scala。在第一部分中(),Odersky讲述了导致Scala诞生的那些历史。在第二部分中,它讨论了Scala设计中的妥协、目标、创新和优势。在第三部分中,他挖掘了Scala的类型系统的设计动机。本期是第四部分,也是最后一部分,Odersky讨论了模式匹配。

\\

模式匹配是什么?

\\

Bill Venners: Scala支持模式匹配。这是一种函数式编程技术,过去尚未在主流语言中出现过。你能解释一下它是什么,以及我们为什么需要它?

\\

Martin Odersky: 模式匹配并不很新,(上世纪)七十年代中期就已经有语言采用。据我所知,第一种语言是ML,但可能也有更早的语言支持。它在许多函数式语言中都算是标准功能,包括ML、Caml、Erlang、以及Haskell。

\\

那么什么是模式匹配呢?它可以让你给一个值匹配多种情况,有点像Java中的switch语句。但它不仅可以像switch语句一样用来匹配数字,还可以匹配对象的内在构建形式。

\\

比如,Scala中的List存在两种情况:要么是空List,写做Nil;要么由一个head元素紧接着另一List tail组成。有了模式匹配,你可以询问:给定的List是空List吗?只要编写case Nil、箭头(=\u0026gt;)以及后续表达式即可:

\\
\case Nil =\u0026gt; // 后续表达式
\\

你还可以询问:它是非空List吗?只要编写case x :: xs、箭头、以及后续表达式即可:

\\
\case x :: xs =\u0026gt; // 后续表达式
\\

双冒号(::)表示cons操作符;x表示List的首元素,xs表示剩余部分。于是,模式匹配会首先区分List是否为空。而如果List空,它会把List的首元素命名为x然后把List剩余部分命名为xs。接下来,这些变量可以被箭头右侧表达式所用。(参见示例1)

\\

示例1:match表达式

\\
\list match {\  case Nil =\u0026gt; \"was an empty list\"\  case x :: xs =\u0026gt; \"head was \" + x + \

转载地址:http://cwwzx.baihongyu.com/

你可能感兴趣的文章
Android中Activity和Fragment的生命周期的对比
查看>>
C++Primer_笔记_异常处理
查看>>
分区交换 alter table exchange partition 在线表 历史表交换
查看>>
zabbix详解:(二)添加被监控机器
查看>>
设计模式单列
查看>>
人像模式的灯光效果?iPhone 8开挂袭来
查看>>
Linux下MongoDB安装与配置
查看>>
DSL配置(PPPOA)
查看>>
WEBRTC执行流程
查看>>
Spring Boot 入门系列
查看>>
Spring Cloud版——电影售票系统<六>使用 Spring Cloud Config 统一管理微服务配置
查看>>
Java not support java EE1.3
查看>>
iptables规则备份及恢复、firewalld九个zone,service的操作
查看>>
www.conf配置文件的参数详解
查看>>
如何实现邀请好友帮抢票功能?
查看>>
深圳联通特邀湖北籍企业参观公司总部大楼举行
查看>>
告警系统主脚本、告警系统配置文件、告警系统监控项目
查看>>
Python 和 PyCharm 在 windows10 环境的安装和设置
查看>>
C语言入门基础之数组——数学和编程的完美结合(图)
查看>>
《远见》的读后感作文1000字范文
查看>>