【Scala基础学习】:scala模式匹配—007

object MatchApp extends App {

  // 基础类型模式匹配
  val names = Array("zhangsan", "lisi", "wangwu")
  val name = names(Random.nextInt(names.length))

  name match {
    case "zhangsan" => println("张三")
    case "lisi" => println("李四")
    case _ => println("不认识")
  }

  def judgeGrade(name: String, grade: String): Unit = {
    grade match {
      case "A" => println("Excellent")
      case "B" => println("Good")
      case "C" => println("Just so so")
      case _ => println("Go home feed pig")
      case _ if (name == "lisi") => println(name + " go home feed pig")
    }
  }

  judgeGrade("zhangsan", "A")
  judgeGrade("lisi", "D") // 双重过滤

  // 数组模式匹配
  def arrayGreeting(array: Array[String]): Unit = {
    array match {
      case Array("zhangsan") => println("Hi:zhangsan")
      case Array(x, y) => print("Hi:" + x + " , " + y)
      case Array("zhangsan", _*) => println("Hi:zhangsan and other friends..")
      case _ => println("Hi: everybody...")
    }

    arrayGreeting(Array("zhangsan"))

    // List模式匹配
    def listGreeting(list: List[String]): Unit = {
      list match {
        case "zhangsan" :: Nil => println("Hi:zhangsan")
        case x::y::Nil => println("Hi:" + x +" , " + y)
        case "zhangsan"::tail => println("Hi:zhangsan and other friends")
        case _ => println("Hi,everybody..")
      }
    }
    listGreeting(List("zhangsan","lisi"))

    // 类型匹配
    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")
      }
    }
    matchType(1f)

    // 异常处理
    try{
      val i = 10/0
      println(i)
    }catch{
      case e:Exception => println(e.getMessage)
    }finally {
      // 释放资源,一定执行
    }

    // case class
    def caseclassMath(person: Person): Unit ={
      person match {
        case CTO(name,floor) => println("CTO name is: "+ name + ",floor is: "+ floor)
        case Employee(name,floor) => println("Employee name is: "+ name + ",floor is: "+ floor)
        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

    caseclassMath(CTO("zhangsan","22"))
  }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值