zoukankan      html  css  js  c++  java
  • 快学Scala-09--模式匹配

    1.匹配字符串

    A => 1  B => 2  C=> 3
    //传统方法
    def getNum(msg:String):Int={
        if(msg=="A") 1
        else if (msg=="B") 2
        else if (msg=="C") 3
        else  4
    }
    //模式匹配方法
    def getNum(msg:String):Int={
        msg match{
            case "A" => 1
            case "B" => 2
            case "C" => 3
            case _ => 4
        }
    }
        getNum("B")

    2.匹配数组

    var arr = Array(0,1,4)
    var info=arr match {
      case Array(0) => println(0)
      case Array(x,y) => print(x,y)
      case Array(0,_*) => print("_","*")   //_* 代表多个数字,数目不确定
      case _ => println("ANY")
    }

    3.样例类

    class  Dog
    //其实这里是略写 Jing8(val age:Int)
    case class  Jing8(age:Int)
    case class  Bage(name:String) extends Dog
    
    //apply 在样例类中是创建对象的
    //unapply 在样例类当作是是取出属性的方法
    //我们不再需要new 一个对象,在调用方法apply() 的时候
    def ma(cl :Any): Unit ={
      cl match {
        case Jing8(age) => print(age)
        case Bage(name) => println(name)
        case _ => println("Any")
      }
    }
    ma(Jing8(45))   //实际上这里传入的是一个对象的实例,使用了省略的apply方法,apply方法可以不用。出来就用
    ma(Bage("Bage"))

    //其实这里是略写 Jing8(val age:Int)  看到红线,给age 赋值编译报错

    《快学Scala》高清中文PDF+源代码
    提取码:an5d 
  • 相关阅读:
    获取屏幕分辨率
    String-去除-指定-字符-操作
    Log4j配置详述
    Java-String-数据乱码
    javascript高级课程-3
    javascript高级课程-2
    javascript高级课程-1
    设计一个算法双链表删除重复
    设计一个算法将一个顺序表逆置
    w3c标准
  • 原文地址:https://www.cnblogs.com/feixiaobai/p/c2738b3907bf5c122662a658e69e3d5f.html
Copyright © 2011-2022 走看看