模式匹配案例

object test {
  case class Person(name:String)
  case class Student(name:String,className:String)
//match case能根据 类名和属性的信息,匹配到对应的类
  //注意:匹配的时候,case class的属性个数要对上
  //属性名不需要一一对应
  def main(args: Array[String]): Unit = {
    val p1=Person("小花")
    val s1=Student("小明","2(3)班")
    val a:Any=p1
    a match {
      case Person(name)=>println("普通人类",name)
      case Student(name,className)=>println(className,"前学生",name)
      case _=>println("其他")
    }
  }
}
object test2 {
//需求:现在有一个数组Array(1,2,3,4),我希望能定义三个变量
  def main(args: Array[String]): Unit = {
val arr=Array(1,2,3,4)
    //第一个元素的值:arr(0)
    //println(arr(0))
//    var x=arr(0)
//    var y=arr(1)
//    var z=arr(2)
//    println(x,y,z)
    //模式匹配
   var Array(_,x,y,z,_*)=arr
    println(x)
    println(y)
    println(z)

  }

}
//改进,让x,y,z分别为2,3,4

for模式匹配

object test3 {
  def main(args: Array[String]): Unit = {
    val m1 = Map(
      "-阿里巴巴" -> 1964,
      "-腾讯" -> 1971,
      "-百度" -> 1968,
      "-小米" -> 1971,
    )

    //  val t=("雷总",1969)//元组
    //  println(t._2)
    //找出哪些是1971年的老板
    //对于Map,可以for的遍历
    //模式匹配
    for ((k, 1968) <- m1) {
      println(k)

    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值