scala 模式匹配

作者: 苟雨 | 来源:发表于2017-07-21 22:49 被阅读1次

scala的模式匹配与java的switch case相似,但是switch case只能对值进行判断,scala还可以对类型,集合进行模式匹配。其中最重要的是对case class 匹配。
其中有多种的匹配的模式:

常量变量匹配

  def bigData(data : String): Unit ={
    data match {

        case "spark" => println("spark")
        case "hadoop" => println("hadoop")
//        case 中实际上是偏函数
        case _ if data == "luo" => println("Luo") // 使用守卫
        case data_ if data_ == "carey" => println("carey") // 可以把值传入赋给新的变量  匹配的是if 后面的变量
        case _ => println("something else")


    }
  }

类型模式

  def exception(e : Exception): Unit ={
    e match {
        case fileEx : FileNotFoundException => println("file not fuond",fileEx) // 新定义的变量只是接受赋值 而她的类型才是重要的
        case _ : Exception => println("exception some what",e)

    }

}
```

匹配集合  序列化模式
```
  def match_collec(array : Any): Unit ={
    array match {
        case Array("scala") => println("scala arr")
        case Array("hello","scala","mm") => println("mm")
        case Array(one,two) => println(one,two)  // 对数组的元素的个数进行匹配 会将第一个值赋给one 第二个值赋给two  元组模式
        case Array("hello",_*) => println("array start with hello")  // 匹配开始为为hello的数组  使用_* 通配
        case List(_,"one","owo") => println("match list")  // 使用占位符
        case _ => println("something else")
    }
}
```


 案例类
构造器模式
```
//  case class  的参数会自动用 val修饰 编译器自动生成伴生对象  伴生对象的unapply() 方法 接受参数执行就生成 新实例
  class Person
  case class Worker(name:String,age:Int) extends Person
  case class Student(name:String,books:Int) extends Person

  def match_construct(p: Person): Unit ={
    p match {
      //构造器模式必须将Person类定义为case class,否则需要自己定义伴生对象并实现unapply方法。
        case Worker(name,age) => println("worker",name,age)
        case Student(name,books) => println(name,"have",books)
        case _ => println("unknown this ")
    }
  }
```



相关文章

  • Scala模式匹配及偏函数

    模式匹配公式: 一、代码Demo 二、Scala中的模式匹配处理异常 三、Scala函数

  • Scala学习笔记(八) 模式匹配

    1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函...

  • Case Class与模式匹配

    模式匹配入门 在java语言中存在switch语句,例如: 上述scala代码展示了如何使用scala中的模式匹配...

  • scala模式匹配

    以下是常见的scala模式匹配实例。 variableName @ pattern 下面这个示例 模式匹配中cas...

  • scala模式匹配

    1.scala是匹配和java中的switch的区别: ...

  • scala 模式匹配

    scala的模式匹配与java的switch case相似,但是switch case只能对值进行判断,scala...

  • Scala 模式匹配

    样本类 case class 类前加上case修饰符,编译器会添加额外的语法,更好的支持模式匹配 添加与类名称相同...

  • Scala 模式匹配

    一、模式匹配基本使用 说明: => 后的代码可以写多行且不用 { } 模式匹配也是表达式,所以它也可以赋值给一个变...

  • scala模式匹配

    基本类型模式匹配 数组匹配 List匹配 类型匹配 case匹配 Some | None匹配

  • scala:模式匹配

    知识点: 模式匹配 提取器

网友评论

    本文标题:scala 模式匹配

    本文链接:https://www.haomeiwen.com/subject/mloekxtx.html