文档章节

内建控制结构之匹配(match)表达式

柳哥
 柳哥
发布于 2014/06/07 15:19
字数 414
阅读 35
收藏 0

Scala的match表达式类似于其他语言中的switch语句,它可以提供给你在多个备选项中做选择。基本上match表达式可以让你使用任意的模式(pattern)作选择。详细情况我们后面再介绍,目前只要考虑使用switch在若干备选项中做选择。如例:

package scalaTest
object Test7 {
    def main(args:Array[String]):Unit = {
        val firstArg = "salt"
        firstArg match{
            case "salt"     => println("pepper")
            case "chips"    => println(salsa")
            case "eggs"     => println("bacon")
            case _          => println("huh?")
        }
    }
}

结果:


如上例,默认情况用下划线(_),这是常用在scala里作占位符来表达未知值的通配符,在这里相当于java中switch的default。与java的switch语句相比,匹配表达式还有一些重要的差别。其中之一是任何类型的常量,都能当成scala里做比较用的样本(case),而不只是java的case语句只能使用整数类型和枚举常量。另一个区别是在每个备选项的最后并没有breakBreak是隐含的,也就是说,不允许从上一个备选项落入到下一个里面去。
然而,与java的switch相比,最显著的差别或许是match表达式也能产生值。如例:

package scalaTest
object Test7 {
    def main(args:Array[String]):Unit = {
        val firstArg = "eggs"
        val friend = firstArg match{
            case "salt"     => "pepper"
            case "chips"    => "salsa"
            case "eggs"     => "bacon"
            case _          => "huh?" 
        }
        println("match也是表达式,见示例结果: " + friend)
    }
}

上面的例子,match表达式的每个备选项不但可以通过打印输出值,还可以只生成返回值而不打印,这更符合函数式编程的要求。


© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 206
博文 405
码字总数 347782
作品 0
杭州
技术主管
私信 提问
shell脚本自由操作字符串

字符串长度 ${#string}expr length $stringexpr "$string" : '.*' 1 stringZ=abcABC123ABCabc2 3 echo ${#stringZ} # 154 echo # 155 echo # 15 例子 9-10. 在一个文本文件的段落之间插入空行......

qianghong000
2017/10/31
0
0
awk内建函数之字符串函数

index(原字符串,匹配字符串) length(字符串) match(原字符串,正则表达式) split(原字符串,数组名称,分隔字符) sprintf(格式字符串,项1,项2,...) sub(正则,替换的新字符串,原字符串) gsub(正则...

吾言
2016/10/28
0
0
Haproxy的ACL规则和获取样本

使用ACLs和获取样本 Haproxy 能够从请求报文,响应报文,从客户端或者服务端信息,从表,环境信息等等中提取数据。提取这样的数据的动作我们称之为获取样本。进行检索时,这些样本可以用来实...

东丶
2017/03/27
0
0
scala函数式编程

 结构  学会使用Scala中主要的结构控制语句  数组  学会数组的声明与使用  映射  了解Scala中的映射的基础知识  包与引用 Scala控制结构  判断(if表达式)  循环(while/do...

泡海椒
2016/04/09
41
0
Python3网络爬虫——(5)正则表达式(re模块)

一、正则表达式 1、正则表达式是字符串搜索引擎 Python正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些字符的组合,组成一个“规则字符串”,这个“规则字...

飞天小橘子
2018/04/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

开始看《JSP&Servlet学习笔记》

1:WEB应用简介。其中1.2.1对Web容器的工作流程写得不错 2:编写Servlet。搞清楚了Java的Web目录结构,以及Web.xml的一些配置作用。特别是讲了@WebServlet标签 3:请求与响应。更细致的讲了从...

max佩恩
49分钟前
2
0
mysql分区功能详细介绍,以及实例

一,什么是数据库分区 前段时间写过一篇关于mysql分表的的文章,下面来说一下什么是数据库分区,以mysql为例。mysql数据库中的数据是以文件的形势存在磁盘上的,默认放在/mysql/data下面(可...

吴伟祥
50分钟前
2
0
SQL语句查询

1.1 排序 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。 格式: SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC; ASC 升序 (默认) DESC 降序 1.查询所有商品信息,...

stars永恒
今天
2
0
IntelliJ IDEA 第一个 Scala 程序

IntelliJ 安装完成 Scala 插件后,你需要尝试使用 IntelliJ 来创建并且运行第一个程序。 通常这个程序只是简单的输出 Hello World。 创建一个新工程 在文件下面选择新建,然后选择创建工程。...

honeymose
今天
2
0
csapp 习题 - 如何实现异或 exclusive-or

阅读 csapp v3 时,练习题 2.13 很有意思。练习题描述如下。 位设置是对于参数 mask 中每一个为 1 的位,那么参数 x 中相应位则被设置为 1 ;位清除是对于参数 mask 中每一个为 1 的位,那么...

ylme
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部