Scala(模式匹配)-第五天

1、基本数据类型模式匹配
    java:对一个值进行条件判断,返回针对不同的条件进行不同的处理 switch case
    scala:
        变量 match {
            case value1 => 代码1
            case value2 => 代码2
            .....
            case - => 代码N
        }
    //加条件进行匹配
        case _ if(name=="lisi") =>println(.....)    //相当于双重过滤

2、Array模式匹配
    def greeting(array:Array[String]):Unit={
        array match{
            case Array("zhangsan") => println("zhangsan ")
            case Array(x,y) => println(x+y)
            case Array("zhangsan",_*)=>println("zhangsan and other friedns..")
            case _ => println("everybody")
        }
    }

    scala> greeting(Array("zhangsan","lisi"))
    zhangsanlisi

    scala> greeting(Array("zhangsan","lisi","wangwu"))
    zhangsan and other friedns..


3、List模式匹配
    //匹配的顺序问题
    def greeting(list:List[String]):Unit={
        list match{
            case "zhangsan"::Nil =>println("zhangsan")
            case x::y::Nil => println(x+" "+y)
            case "zhangsan"::tail => println("zhangsan and other friedns..")
            case _ => println("everybody")
        }
    }

    //类型匹配
    def matchType(obj:Any):Unit={
        obj match{
            case x:Int => println("Int")
            case s:String => println("String")
            case m:Map[_,_] => m.foreach(println)
            case _ => println("other type")

        }
    }

4、Scala的异常处理
    try{

    }catch{
        case e:Exception => println("出错啦")
    }finally{
        //释放资源,一定能执行
    }


5、case class模式匹配
    def caseclassMatch(person:Person): Unit={
        //需要是顶层的数据进来进行匹配,因此继承Person
        person match {
            case CTO(name, floor) => println(...)
            case Employee(name, floor) => println(...)
            case _ => println("other");
        }
    }
    
    class Person
    case class CTO(name:String, floor:String) extends Person
    case class Employee(name:String, floor:String) extends Person
    case class Other(name:String) extends Person

6、Some&None模式匹配
    val grades = Map("messi"->"A", "zhangsan"->"C")

    def getGrade(name:String):Unit={
        val grade = grades.get(name)
        grade match{
            case Some(grade) => println("your grade is "+ grade)
            case None => println("sorry...")
        }
    }
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值