第26讲: Scala中的模式匹配入门实战详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第26讲: Scala中的模式匹配入门实战详解相关的知识,希望对你有一定的参考价值。

在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

以上是关于第26讲: Scala中的模式匹配入门实战详解的主要内容,如果未能解决你的问题,请参考以下文章

第30讲:模式匹配高级实战:嵌套的Case class

第24讲: Scala中SAM转换实战详解

第23讲: Scala高阶函数实战详解

Scala零基础教学61-80

第33讲:List的一阶函数操作代码实战详解

Scala实战高手****第13课Scala模式匹配实战和Spark源码鉴赏