文档章节

内建控制结构之匹配(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表达式的每个备选项不但可以通过打印输出值,还可以只生成返回值而不打印,这更符合函数式编程的要求。


© 著作权归作者所有

共有 人打赏支持
柳哥
粉丝 205
博文 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

没有更多内容

加载失败,请刷新页面

加载更多

kubernetes notes

Error from server (ServerTimeout): error when creating "mysql.yaml": No API token found for service account "default", retry after the token is automatically created and added t......

kut
37分钟前
2
0
代理模式---静态代理

package com.atguigu.java; //接口的应用:代理模式---静态代理。 public class ProxyTest { public static void main(String[] args) { NetWork work = new RealServer(); ProxyServer pro......

architect刘源源
52分钟前
2
1
工作中的一些Git使用

git stash list 查看所有stash git stash apply 0 应用序号为0那个stash并且不删除它 git stash pop 0 应用序号为0那个stash并且删除删除删除它 git stash save "env" stash当前的改动并且取...

-___-
今天
1
0
C# webservice 配置总结

为了方便下次查看,把总结配置文件放这里,看的方便。 <?xml version="1.0" encoding="utf-8"?><!-- 有关如何配置 ASP.NET 应用程序的详细消息,请访问 http://go.microsoft.com/f...

轻轻的往前走
今天
0
0
SpringCloud之Eureka

Eureka简介 什么是Eureka? Eureka是一种基于rest提供服务注册和发现的产品: Eureka-Server: 用于定位服务,以实现中间层服务器的负载平衡和故障转移。 Eureka-client:用于服务间的交互,内...

lc_fly1
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部