自学内容网 自学内容网

Scala模式匹配——高阶用法

(一)scala的模式匹配

(1)常量

(2)变量

(3)构造器

(4)序列

(5)元组

(6)类型

(7)变量绑定

(二)Scala模式匹配的语法格式:

X match{

case1

case2

}

package test7

import scala.io.StdIn

object test7_1 {
  //从控制台读入一个数字a,使用(StdiIn.readInt)
  //如果a>=0并且 a<= 3,打印[0 - 3]
  //如果 a>= 4 并且 a<=8,打印[4 - 8]
  //否则:打印未匹配
  def main(args: Array[String]): Unit = {
    val a = StdIn.readInt()//等待从键盘输入内容
    println(s"从键盘输入的数字是:$a")
    a match {
      case x if  x>= 0 && x<=3 => println(s"[0 - 3]")
    case y if y>= 4 && y<= 8 => println(s"[4 - 8]")
      case _ => println("其他")
    }
  }
}
package test7

import scala.io.StdIn

object test7_1 {
  //从控制台读入一个数字a,使用(StdiIn.readInt)
  //如果a>=0并且 a<= 3,打印[0 - 3]
  //如果 a>= 4 并且 a<=8,打印[4 - 8]
  //否则:打印未匹配
//  def main(args: Array[String]): Unit = {
//    val a = StdIn.readInt()//等待从键盘输入内容
//    println(s"从键盘输入的数字是:$a")
//    a match {
//      case x if  x>= 0 && x<=3 => println(s"[0 - 3]")
//    case y if y>= 4 && y<= 8 => println(s"[4 - 8]")
//      case _ => println("其他")
//    }
//  }
//  def main(args: Array[String]): Unit = {
//    for (i <- 2000 to 2040){
//      i match {
//        case year if year%4 == 0 && year%100 != 0 || year%400 == 0 =>println(s"${year}是闰年")
//        case _ =>  println(s"${i}不是闰年")
//
//      }
//    }
//  }
  // 1. 匹配类型
//  def main(args: Array[String]): Unit = {
//    val i:Int =  1
//    val b: Boolean = false
//
//    //Any任意的
//    //val x:Any = "abc"
    val x:Any = i
//
//    val x:Any = b
//    x match {
//      case _:Int => println(s"$x 是Int类型的") // _:Int 表示变量是Int类型
//      case _:Boolean=>println(s"$x 是Boolean类型的")
//      case _ => println("其他")
//
//    }
//  }

  // 2. 匹配数组

//  def main(args: Array[String]): Unit = {
//    var arr1 = Array(1,3,4)//三个元素,且第一个为一
//    var arr2 = Array(1,6,7)
//    var arr3 = Array(0,1,6,7,3)
//
//    var arr = Array(1)
//    arr match {
//      case Array(0) => println("1个元素,且第一个为0")
//      case Array(1,x,y) => println(s"三个元素,且第一个为一,第二个为${x},第三个为${y}")
//      case Array(1, _*) => println("n个元素,且第一个为1")
//      case _ => println("其他")
//    }
//  }

  // 3. 匹配case class
//  def main(args: Array[String]): Unit = {
//  case class Stu(name:String)
//  case class Teacher(name:String,subject:String)
//  val s1 = Stu("小花")
//  val t1 = Teacher("小明","体育")
//
//  val x:Any = t1
//
//  x match {
//    case Stu(a) => println(s"学生${a}")
//    //属性的个数对应上
//    case Teacher(a,b) => println(s"${b}老师 ${a}")
//    case _ => println("其他")
//  }
//}
  //定义变量赋值
//def main(args: Array[String]): Unit = {
//  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
//  println(s"x = $x , y = $y , z = $z")
//}
  
}


原文地址:https://blog.csdn.net/GZM1314YMX/article/details/144101327

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!