×
Scala 教程Scala 简介Scala 安装及环境配置Scala 起步Scala 进一步Scala 基础语法Scala 数据类型Scala 变量Scala 访问修饰符Scala 运算符Scala IF...ELSE 语句Scala 循环Scala 函数Scala 闭包Scala 字符串Scala 数组Scala Collection(集合)Scala Match 表达式Scala Iterator(迭代器)没有“break”和“continue”Scala 类和对象Scala Trait(特征)Scala Trait 的基本概念选择瘦接口还是胖接口设计?Scala Trait 示例–RectangularScala Ordered TraitTrait 用来实现可叠加修改操作Scala 模式匹配Scala 正则表达式Scala 异常处理Scala 提取器(Extractor)Scala 文件 I/OScala 减低代码重复Scala 柯里化函数Scala 创建新的控制结构Scala 传名参数Scala 的类层次关系Scala 基本数据类型的实现方法Scala 底层类型

Scala Match 表达式


Match 表达式

Scala 的 Match 表达式支持从多个选择中选取其一,类似其它语言中的 switch 语句。通常来说,Scala 的 match 表达式支持任意的匹配模式,这种基本模式将在后面介绍,本篇介绍类似 switch 用法的 match 表达式,也是在多个选项中选择其一。

例如下面的例子从参数中读取食品的名称,然后根据食品的名称,打印出该和该食品搭配的食品,比如输入 ”salt”,与之对应的食品为”pepper”。如果是”chips”,那么搭配的就是“salsa”等等。

val firstArg = if (args.length >0 ) args(0) else ""
firstArg match {
  case "salt" => println("pepper")
  case "chips" => println("salsa")
  case "eggs" => println("bacon")
  case _ => println("huh?")
}

这段代码和 Java 的 switch 相比有几点不同:
一是任何类型的常量都可以用在 case 语句中,而不仅仅是 int 或是枚举类型。
二是每个 case 语句无需使用 break,Scala不支持“fall through”。
三是 Scala 的缺省匹配为”_”,其作用类似 java 中的 default。

而最关键的一点是 scala 的 match 表达式有返回值,上面的代码使用的是 println 打印,而实际上你可以使用表达式,比如修改上面的代码如下:

val firstArg = if (args.length >0 ) args(0) else ""
val friend = firstArg match {
  case "salt" => "pepper" 
  case "chips" => "salsa" 
  case "eggs" => "bacon" 
  case _ => "huh?" 
}

这段代码和前面的代码是等效的,不同的是后面这段代码 match 表达式返回结果。


分类导航

关注微信下载离线手册

bootwiki移动版 bootwiki
(群号:472910771)