zoukankan      html  css  js  c++  java
  • 11-1 模式匹配

    字符,匹配值

    object 字符匹配 {//匹配值之无返回值
        def m1(): Unit ={
            val ch = 'c'
            ch match {
                case 'a' => println(1)
                case 'b' => println(2)
                case  _  => println(3)
            }
        }
    
        //匹配值之有返回值
        def m2(){
            val ch = 'b'
            val m = ch match {
                case 'a' => 1
                case 'b' => "hello"
                case  _  => '3'
            }
            println(m)
        }
    
        //守卫条件
        def m3(){
            val ch = 'b'
            val m = ch match {
                case 'a' if ch.isDigit => 1
                case 'b' if ch > 'c' => "hello"
                case  _   => '3'    //如果该处也有守卫条件导致没有匹配,则scala.MatchError
            }
            println(m)
        }
    }

    字符串,匹配值

    object 字符串 {//小写开头的变量在case后当做变量,即m1()输出:xXX
        def m1(): Unit ={
            val str = "qwert"
            val xXX = 'q'
            str(1) match {
                case 'q' => println("这是q")
                case xXX => println("xXX")
                case x if x.isDigit => println(x + " : " + 1)
                case _ => println(2)
            }
        }
    
        //若要把xXX解析成常量,则加 反引号,所以输出:2
        def m2(): Unit ={
            val str = "qwert"
            val xXX = 'q'
            str(1) match {
                case 'q' => println("这是q")
                case `xXX` => println("xXX")
                case x if x.isDigit => println(x + " : " + 1)
                case _ => println(2)
            }
        }
    
        //大写开头的变量表示常量,输出:2
        def m3(): Unit ={
            val str = "qwert"
            val Xxx = 'q'
            str(1) match {
                case 'q' => println("这是q")
                case Xxx => println("Xxx")
                case x if x.isDigit => println(x + " : " + 1)
                case _ => println(2)
            }
        }
    }

    类型匹配

    object 匹配类型 {
      //输出:Int def main(args: Array[String]): Unit
    = { val i:Any = 10 i match { case x:String=> println("String") case x:Int => println("Int") } } }
    渐变 --> 突变
  • 相关阅读:
    [译]Mongoose指南
    shell去掉后缀方法
    memcache和memcached区别
    ssh隧道远程连接mysql
    nginx实现某个页面http访问,其余全部跳转到https
    es快照和备份
    elasticsearch 单节点实现
    logstash5安装并实现mariadb数据写入到elasticsearch
    linux 内存分析
    zabbix api创建screen vsize限制解决
  • 原文地址:https://www.cnblogs.com/lybpy/p/9757310.html
Copyright © 2011-2022 走看看