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")
//}
  
}
相关推荐
坐怀不乱杯魂几秒前
C++ STL unordered_map/set 实现
开发语言·c++
七月丶1 分钟前
实战复盘:我为什么把 TypeScript 写的 CLI 工具用 Rust 重写了一遍?
前端·后端·rust
csbysj20203 分钟前
jEasyUI 条件设置行背景颜色
开发语言
JIngJaneIL9 分钟前
基于java+ vue交友系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·交友
王中阳Go11 分钟前
05 Go Eino AI应用开发实战 | Docker 部署指南
人工智能·后端·go
普通网友14 分钟前
Bash语言的图算法
开发语言·后端·golang
m0_7431251319 分钟前
claude --version 报错Claude Code on Windows requires git-bash (https://git-scm.com/downloads/win).
开发语言·git·bash
24级计算机应用技术3班闫卓20 分钟前
Bash Shell 基础操作全面指南
开发语言·bash
雨岚霏22 分钟前
Bash语言的数据库编程
开发语言·后端·golang
被AI抢饭碗的人28 分钟前
linux:线程池
linux·开发语言