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

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

第52讲:Scala中路径依赖代码实战详解

<DT大数据梦工厂>大数据实战视频"Scala深入浅出实战经典"视频.音频和PPT下载!第52讲:Scala中路径依赖代码实战详解百度云:http://pan.baidu.com/s/1gdES4hX360云盘:http://yunpan.cn/ccHXX2Wkrrrt4 访问密码 c489腾讯微云:http://url.cn/VV5kx5 记录: Scala中内部类的路径依赖非常适合现在互联网看待事物所属关系,组织关系. 根据依赖的外部实例的不同,内部类类型会有所不同.由

Scala 深入浅出实战经典 第52讲:Scala中路径依赖代码实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频.PPT.代码下载:百度云盘:http://pan.baidu.com/s/1c0noOt6 腾讯微云:http://url.cn/TnGbdC 360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2土豆:http://www.tudou.com/programs/view/jeikRw_tlBM/优酷:http://v.youku.com/v_show/id_

Scala中路径依赖代码实战详解之Scala学习笔记-42

package com.leegh.parameterization /** * @author Guohui Li */ class Outer { private val x = 10 class Inner { private val y = x + 10 }} object Path_Dependence { def main(args: Array[String]): Unit = { val outer = new Outer val inner = new outer.Inner

scala的Type与Class实战详解

学习了scala的Type与Class实战详解,在运行时是通过反射来得到的.但是scala不同. scala.reflect.runtime.universe._ type 类和type比较,type比class更具体.任何数据都有type.但是class是一种数据结构,或数据 结构的抽象. 更宏观.但type更具体. 打印类的type就是包名加类名,但是class打印时在前面得加class object的getClass是class 包名加类名加$.所以object是有具体的类的 object

第71讲:Scala界面Panel、Layout实战详解

今天学习了王家林老师scala讲座的第71讲,scala界面编程panel实战.让我们一起来看一下. 信息来源于 DT大数据梦工厂微信公众账号:DT_Spark 关注微信账号,获取更多关于王家林老师的课程内容 王老师QQ:1740415547 微信号:18610086859 不多说,先上代码: import scala.swing._ object GUI_Panel extends SimpleSwingApplication{  def top = new MainFrame{//重写框架 

Scala中隐式对象代码实战详解之Scala学习笔记-54

package com.leegh.implicits /** * @Tuthor Guohui Li */abstract class Template[T] { def add(x: T, y: T): T} abstract class SubTemplate[T] extends Template[T] { def unit: T} object Implicits_Object { def main(args: Array[String]): Unit = { implicit obj

Scala中隐式类代码实战详解之Scala学习笔记-53

package com.leegh.implicits import java.io.Fileimport scala.io.Source /** * @author Guohui Li */object Context_Helper { implicit class FileEnhance(file: File) { def read = Source.fromFile(file.getPath).mkString } implicit class Op(x: Int) { def add(s

Spark进阶视频之Scala中隐式类代码实战详解

王家林亲授<DT大数据梦工厂>大数据实战视频"Scala深入浅出实战经典"视频.音频和PPT下载! 欢迎广大Spark爱好者学习交流.也欢迎广大学习爱好者加入DT大数据梦工厂交流群:462923555DT大数据微信公众账号:DT_Spark 视频观看链接http://www.tudou.com/plcover/Yy5F5gsurSE/ 视频下载地址百度云:http://pan.baidu.com/s/1eQGqzEa腾讯微云:http://url.cn/SshT6b

第74讲:从Spark源码的角度思考Scala中的模式匹配

今天跟随王老师学习了从源码角度去分析scala中的模式匹配的功能.让我们看看源码中的这一段模式匹配: 从代码中我们可以看到,case RegisterWorker(id,workerHost,........){}这里为模式匹配,而我们的模式匹配类RegisterWorker之前就已定义好,如下图: 我们可以看到,我们的模式匹配类是已经定义好的,当我们的master接收到worker发来的消息时,进行模式匹配: . 这里还有一个知识点,我们可以发现,当我们进行模式匹配时,我们并没有使用new方法