在scala中使用match表达式进行模式匹配,和其他语言中的switch语句的功能类型。但是match的功能更强大
我们先看一个简单的例子
object HelloPatternMatch {
def main(args: Array[String]): Unit = {
var data : Int = 1
data match {
case 1 => println("one")
case 2 => println("two")
case _ => println("others")
}
}
}定义一个变量data,对data的值进行模式匹配。
case语句逐个的匹配data的值,命中了即执行=> 后的操作。
case _ 代表 else选项 。
每项case结束后,无需添加break语句。只要命中一个case,后续自动跳出匹配。如下:
scala> val data : Int = 1
data: Int = 1
scala>
| data match {
| case 1 => println("one")
| case 1 => println("another_one")
| case 2 => println("two")
| case _ => println("others")
| }
<console>:15: warning: unreachable code
case 1 => println("another_one")
^
one
scala>match 语句是一个表达式,表达式的返回值即是case的返回值。
我们看看如下的另一种写法
val resutl = data match {
case i if i ==1 => "one"
case number if number ==2 => "two"
case _ => "others"
}case 后面定义了一个常量 i 和 number 该常量在进行匹配的时候赋值。并且该常量可以再次引用。
例如
"Spark! ".foreach { x => println(
x match {
case ‘ ‘ => "space"
case ch => "Char:" + ch
}
)
}本文出自 “叮咚” 博客,请务必保留此出处http://lqding.blog.51cto.com/9123978/1741902
原文:http://lqding.blog.51cto.com/9123978/1741902