Scala模式匹配

Scala模式匹配:
Java:对一个值进行条件判断,然后针对不同的条件进行不同的处理
变量 match {
case value1 => 代码1
case value2 => 代码2

case _ => 代码N
}

package com.imooc.scala.course06

import scala.util.Random

object MatchApp extends App {
//最基础的模式匹配
  val names = Array("小范诗仙","院长","庆帝")
  val name = names(Random.nextInt(names.length))
  name match {
    case "小范诗仙" => println("范闲")
    case "院长" => println("陈萍萍")
    case _ => print("真不知道你们在说神马")
  }
  
//加条件的匹配
  def judgeGrade(name:String,grade:String): Unit ={
    grade match {
      case "A" => println("Excellent...")
      case "B" => println("Good...")
      case "C" => println("Just so so...")
      case _ if(name=="lisi")=> println(name + " ,you are a good boy, but...")
      case _ => println(name + "You need work harder...")
    }
  }

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

Array模式匹配

  def greeting(array:Array[String]): Unit ={
    array match{
      case Array("范闲") => println("嗨,范闲")
      case Array(x,y) => println("Hi: "+ x +" , "+y)
      case Array("范闲",_*) => println("嗨,范闲和其他小伙伴...")
      case _ => println("Hi, everybody...")
    }
  }
  greeting(Array("叶青眉","范闲","陈萍萍","庆帝"))
}

List模式匹配

  def greeting(list:List[String]): Unit ={
    list match {
      case "范闲"::Nil => println("嗨,范闲")
      case x::y::Nil => println("嗨,"+x+" , "+y)
      case "范闲"::tail => println("嗨, 范闲和其他朋友")
      case _=>println("hi, everybody")
    }
  }
  greeting(List("范闲","陈萍萍","庆帝"))

//类型匹配

  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(Map("name"->"PK"))

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("PK","22"))
  caseclassMath(Employee("zhangsan","19"))
  caseclassMath(Other("other"))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值