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

本文共 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://hwtrl.baihongyu.com/

你可能感兴趣的文章
「转」xtrabackup新版详细说明
查看>>
Spring Boot 构建电商基础秒杀项目 (十) 交易下单
查看>>
HTTP协议入门知识
查看>>
SQL中创建用户的方法
查看>>
PHP168 6.0及以下版本login.php代码执行
查看>>
Java代理(jdk静态代理、动态代理和cglib动态代理)
查看>>
WPF生命周期
查看>>
各大Oj平台介绍
查看>>
hdu1059 dp(多重背包二进制优化)
查看>>
四象限分析法分析你是否适合做管理
查看>>
Create a database in mysql for mac
查看>>
史上最全、JavaScript基础篇
查看>>
Selenium Web 自动化 - Selenium常用API
查看>>
第13天:页面布局实例-博雅主页
查看>>
javascript基础
查看>>
jquery获取、改变元素属性值
查看>>
关闭VirtualBox虚拟机的时钟同步
查看>>
剪贴板(进程通信)
查看>>
删除链表中重复的结点
查看>>
查看你的电脑上.Net Framework版本的方法
查看>>