在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 } ) }
时间: 2024-10-11 22:56:58