zoukankan      html  css  js  c++  java
  • 关于Scala中的match case方法的使用

    在scala中有一个方法 match 类似于java内的 switch,但是其功能却比 switch 强大了不止一点

    switch:条件分支

    match:模式匹配

    在java内使用switch若是不加break将会导致穿透,但是match却不需要担心,其用法类似switch,常配合case使用

    //值的匹配

    val a = 3
    val x = a match{
        case 3 => "1"
        case 4 => "2"
        case 5 => "3"
        case _ => "default"      
    }
    println(x) // 1
    
    //这里值不限定于数值类型,其他类型同样适用
    val b = "1"
    val y = b match {
        case "1" => "剪刀"
        case "2" => "石头"
        case "3" => ""
    }
    println(y) // "剪刀"

    //多值的匹配

    List(5,10,15,20) match{
        case one :: two :: three => println(one,three) // :: 为中缀表达式
        case _ => println("hehe")  // _通配符 在这作用相当于switch内结尾的default
    }
    // (5,List(15,20))

     //模式守卫

    val a = 3
    val b = a match {
      case a if (a>0)  => "值大于0"
      case _ => "值小于0"  
    }
    println(b)  //值大于0
    var a = List(1,2,3,4)
    var b = a.groupBy(x=>x match{
         case x if (x%2==0)  => "even number"
         case _ => "uneven number"
    })
    println(b)  //Map(even number -> List(2, 4), uneven number -> List(1, 3))

     //类型转换

    def a(x:Any)={
        x match{
            case i:Int => x.asInstanceOf[Int] + 10
            case i:String => "hello"
            case _ => x
        }
    }
    print(a(20))  //30
  • 相关阅读:
    phpstorm 破解方法
    shell_exec
    数据库配置
    sprintf
    MySQL优化步 (InnoDB)
    Python小白需要知道的 20 个骚操作!
    Python常用库整理
    Python:什么是进阶,如何进阶?
    Python中标准模块importlib详解
    Python开发【Django】:中间件、CSRF
  • 原文地址:https://www.cnblogs.com/afeiiii/p/13675204.html
Copyright © 2011-2022 走看看