Scala的高阶匹配

import scala.io.StdIn

object t23 {
  def main(args: Array[String]): Unit = {
    //从控制台读入一个数字a
    // 如果a>=0并且a<=3打印"[0-3]
    // 如果a>=4并且a<=8打印"[4-8]
    // 否则,打印未匹配
//    val a = StdIn.readInt()
//    println(s"从键盘输入的数字是:$a")
//    a match {
//      case x if x>=0 && x<=3 => println("[0-3]")  //if x>=0 && x<=3 守卫语句
//      case x if x>=4 && x<=8 => println("[4-8]")
//      case _ => println("未匹配")
//    }

    //在2000-2040年,如果年份是闰年,就输出“是闰年”,否则输出“不是闰年”
//    for(i <- 2000 to 2040){
//      i match {
//        case year if (year % 4 == 0)&&(year % 100 != 0) => println(s"${year}是闰年")
//        case year if (year % 400 == 0) => println(s"${year}是闰年")
//        case _ => println(s"${i}不是闰年")
//      }
//    }

    //匹配类型
//    val i:Int = 1
//    val b:Boolean = false
//    //Any 任意的
    val x:Any = "abc"
//    //定义一个变量x,类型无所谓
//    val x:Any = b
//    x match {
//      case _:Int => println(s"$x 是Int 类型的") //_:Int 表示变量是Int类型的
//      case _:Boolean => println(s"$x 是Boolean 类型的")
//      case _ => println("其他")
//    }

//    //匹配数组
//    val arr1 = Array(1,3,4)
//    val arr2 = Array(1,6,7)
//    val arr3 = Array(0,1,6,7,3)
//
//    val arr = Array(1)
//    arr match {
//      case Array(0) => println("1个元素,且第一个为0")
//      case Array(1,x,y) => println(s"3个元素,且第一个为1,第二个是${x},第三个是${y}")
//      case Array(1,_*) => println("n个元素,且第一个为1")
//      case _ => println("其他")
//    }

//    //匹配case class
//    case class Stu(name:String)
//    case class Teacher(name:String,subject:String)
//    val s1 = Stu("小花")
//    val t1 = Teacher("小明","体育")
//
//    val x:Any = "x"
//    x match {
//      case Stu(a) => println(s"学生${a}")
//      //属性的个数要对应上
//      case Teacher(a,b) => println(s"${b}老师 ${a}")
//      case _ => println("其他")
//    }

//    //定义变量赋值
//    var arr = Array(1,2,3,4,7)
//    //定义三个变量,分别保存数组中的第一个,第二个,第三个元素
    var x = arr(0)
    var y = arr(1)
    var z = arr(2)
    var Array(x,y,z,_) = arr
//    var Array(x,y,_,z,_*) = arr
//    println(s"x = $x,y = $y,z = $z")


    //匹配for循环
    //从 Map 中打印所有年龄为1971的创业者的信息。
    val m1 = Map(
      "马云﹣阿里巴巴" -> 1964,
      "马化腾﹣腾讯" -> 1971,
      "李彦宏-百度" -> 1968,
      "雷军-小米" -> 1969,
      "丁磊﹣网易" -> 1971,
      "张一鸣-抖音" -> 1983,
      "刘强东-京东" -> 1974,
      "程维-滴滴" -> 1983,
      "王兴﹣美团" -> 1979,
      "周鸿祎﹣360" -> 1970,
      "黄峥﹣拼多多" -> 1980,
      "李想-理想汽车" -> 1981,
      "何小鹏-小鹏汽车" -> 1977,
      "贾跃亭-乐视" -> 1973,
      "陈天桥﹣盛大网络" -> 1973,
      "周源-知乎" -> 1980,
      "张小龙-微信" -> 1969,
      "王小川﹣搜狗" -> 1978
    )
    for((k,v) <- m1 if(v == 1971)){
      println(k,v)
    }
    println("-"*40)
    for ((k, 1971) <- m1) {
      println(k, 1971)
    }

  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值