美文网首页Spark
Scala模式匹配

Scala模式匹配

作者: geekAppke | 来源:发表于2018-12-10 11:19 被阅读44次
Scala 提供了强大的模式匹配机制,应用也非常广泛
一个模式匹配包含了一系列备选项,每个都开始于关键字 case
每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式
Actor节点与节点之间通信、发送消息,全都是模式匹配!

模式匹配match

object Lesson_Match {
  def main(args: Array[String]): Unit = {
    val tuple = Tuple6(1,2,3f,4,"abc",55d)
    val tupleIterator = tuple.productIterator
    while(tupleIterator.hasNext){
      matchTest(tupleIterator.next())
    }
    
  }
  /**
   * 注意点:
   * 1.模式匹配不仅可以匹配值,还可以匹配类型
   * 2.模式匹配中,如果匹配到对应的类型或值,就不再继续往下匹配
   * 3.模式匹配中,都匹配不上时,会匹配到` case _ `,相当于`default`
   */
  def matchTest(x:Any) ={
    x match {
      case i:Int=> println("type is Int")
      case 1 => println("result is 1")
      case 2 => println("result is 2")
      case 3 => println("result is 3")
      case 4 => println("result is 4")
      case s:String => println("type is String")
      case d :Double => println("type is Double")
      case _ => println("no match")
    }
  }
}
  • 模式匹配不仅可以匹配值(case 1)还可以匹配类型(case s:String)
  • 匹配过程有值自动转换
  • 从上到下顺序匹配,如果匹配到则不再往下匹配
  • 都匹配不上时,会匹配到case _,相当于default
  • match的最外面的”{ }”可以去掉看成一个语句

样例类case classes

使用了case关键字修饰的类,就是样例类(case classes),样例类是种特殊的类。
默认实现了类构造参数getter方法(构造参数默认被声明为val
当声明构造参数为var类型,它将帮你实现settergetter方法

case class Person1(name:String,age:Int) 

object Lesson_CaseClass {
  def main(args: Array[String]): Unit = {
    val p1 = new Person1("zhangsan",10)
    val p2 = Person1("lisi",20)
    val p3 = Person1("wangwu",30)
    
    val list = List(p1,p2,p3)
    list.foreach { x => {
      x match {
        case Person1("zhangsan",10) => println("zhangsan")
        case Person1("lisi",20) => println("lisi")
        case _ => println("no match")
      }
    } }
  }
}
  • 写方法体没意义,都帮你实现好了
  • 样例类默认帮你实现了toStringequalscopyhashCode等方法
  • 样例类可以new,也可以不用new

Scala学习笔记导航

相关文章

  • 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/vsdchqtx.html