文档章节

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

柳哥
 柳哥
发布于 2014/06/07 15:19
字数 414
阅读 34
收藏 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表达式的每个备选项不但可以通过打印输出值,还可以只生成返回值而不打印,这更符合函数式编程的要求。


© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 203
博文 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
Haproxy的ACL规则和获取样本

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

东丶
2017/03/27
0
0
awk内建函数之字符串函数

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

吾言
2016/10/28
0
0
scala函数式编程

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

泡海椒
2016/04/09
41
0
Linux awk 命令

AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字符。 语法 awk [选项...

yanfeilai528
2017/07/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mac OS X下Maven的安装与配置

Mac OS X 安装Maven: 下载 Maven, 并解压到某个目录。例如/Users/robbie/apache-maven-3.3.3 打开Terminal,输入以下命令,设置Maven classpath $ vi ~/.bash_profile 添加下列两行代码,之后...

TonyStarkSir
今天
3
0
关于编程,你的练习是不是有效的?

最近由于工作及Solution项目的影响,我在重新学习DDD和领域建模的一些知识。然后,我突然就想到了这个问题,以及我是怎么做的? 对于我来说,提升技能的项目会有四种: 纯兴趣驱动的项目。即...

问题终结者
今天
4
0
打开eclipse出现an error has occurred see the log file

解决方法: 1,打开eclipse安装目录下的eclipse.ini文件; 2,打开的文本文件最后添加一行 --add-modules=ALL-SYSTEM 3,保存重新打开Eclipse。...

任梁荣
昨天
4
0
搞定Northwind示例数据库,无论哪个版本的SQLServer都受用

Northwind数据库 从这里可以找到突破口: http://social.msdn.microsoft.com/Forums/zh-CN/Vsexpressvb/thread/8490a1c6-9018-40c9-aafb-df9f79d29cde 下面是MSDN: http://msdn2.microsoft......

QQZZFT
昨天
1
0
mysql主从同步,安装配置操作

准备 两台mysql服务,我这里准备了如下: 主库:192.168.176.128 从库:192.168.176.131 如何在Linux上安装mysql服务,请看https://blog.csdn.net/qq_18860653/article/details/80250499 操作...

小致dad
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部