美文网首页scala
scala:模式匹配

scala:模式匹配

作者: Frank_8942 | 来源:发表于2018-12-06 11:29 被阅读7次

知识点:

  1. 模式匹配
  2. 提取器

object Scala05_Match {
  case class ClassA(a:Int)

  def main(args: Array[String]): Unit = {
    /*
    模式匹配:
    Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句、类型检查等。
    并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配
     */
    val flag:Any = ("",2,3)
    val result =
      flag match {
        case 'a' => println("确切值匹配  必须为char字符 a ")
        case "abc" => println("确切值匹配  必须为字符串 abc ")
        case value:Int => println(s"数据类型匹配   必须为数据类型Int, 如果匹配成功则将此值赋值给变量 ${value} ")
        case Array(0,a,b) => println(s"匹配数组   匹配成功后将变量赋值给${a},${b}")
        case (a,2,b) => println(s"匹配元组  匹配成功后将变量赋值给 ${a},${b} ")
        case ClassA(a) => println("样例类匹配  本质上和数组匹配没区别,据说样例类匹配在底层做了优化")
        case value if(value.toString.length > 30) => println(s"添加守卫    将变量${flag}赋值给变量${value}, 并且还要满足守卫if的判断")
        case _ => println("_ 可以匹配任何情况")
      }
    /*
    注意点:
    1. match是表达式,其结果是一个值
    2. 在scala中,如果要进行数据类型转换, 我们更倾向于使用类型匹配,取代 isInstanceOf 方法
    3. 如果match匹配不成功,就会抛出 MatchError 异常,所以最后要添加 case _ 这个匹配规则,此匹配规则会匹配所有情况,类似与 java中的 default
    4. 与java的switch语句不同的是,scala模式匹配不会掉入下一个分支,不需要在分支语句后加 break 的处理
    5. 模式匹配中的变量必须是小写字母开头
    6. 在匹配数组,列表和元组的背后,是用到scala的提取器功能, 从对象中提取值的 unapply或unapplySeq 方法
    */



    //利用提取器赋值
    val extractor = Array(1,"b",'c')
    val Array(a1,a2,a3) = extractor
    //for循环中使用提取器赋值
    val map: Map[Int, String] = Map(1->"a",2->"b")
    for( (k,v) <- map ){
      println(s"将Properties对象的值分别赋值给 ${k} ${v}")
    }
  }
}

相关文章

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