Scala中条件守卫

复制代码
package Scala10

import scala.io.StdIn

//模式匹配-条件守卫
object jfhj {
  //
  //  从控制台读入一个数字a,使用(StdIn.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 x if x >= 4 && x <= 8 => println(s"[4-8]")
  //      case _ => println(s"打印未匹配")
  //    }
  //  }
  //  def main(args: Array[String]): Unit = {
  //    for(i<- 2000 to 2040){
  //      i match {
  //        case x if (x%4==0) && (x%100!=0)|| (x%400==0) =>println(s"${x}年是闰年")
  //        case _=>println(s"${i}年不是闰年")
  //      }
  //    }
  //  }
  //  匹配类型
  //  def main(args: Array[String]): Unit = {
  //    val i: Int = 1
  //    val b: Boolean = false
  //
  //    //    Any任意的
  //    //    val x: Any = i
      定义一个变量x,类型无所谓
  //    //    val x: Any = b
  //    val x: Any = "abc"
  //    x match {
  //      case _: Int => println(s"$x 是Int类型的") //_:Int 表示变量是Int类型
  //      case _: Boolean => println(s"$x 是Boolean 类型的")
  //      case _ => println("其他")
  //    }
  //  }

  //  匹配数组
  //  def main(args: Array[String]): Unit = {
  //    var arr1=Array(1,2,3)
  //    var arr2=Array(1,2,4)
  //    var arr3=Array(1,2,9,38)
  //
  //    var arr=Array(100)
  //    arr match {
  //      case Array(0)=>println("只有1个元素,且第一个为0")
  //      case Array(1,x,y)=>println(s"三个元素,且第一个为1,第二个是${x},第三个是${y}")
  //      case Array(1,_*)=>println("n个元素,且第一个为1")
  //      case _ =>println("其他")
  //    }
  //  }
//  匹配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")
//}

}
相关推荐
乌鸦乌鸦你的小虎牙1 小时前
qt 5.12.8 配置报错(交叉编译环境)
开发语言·数据库·qt
feifeigo1232 小时前
Leslie人口模型MATLAB实现(中长期人口预测)
开发语言·matlab
写代码的二次猿2 小时前
安装openfold(顺利解决版)
开发语言·python·深度学习
一只大袋鼠2 小时前
Redis 安装+基于短信验证码登录功能的完整实现
java·开发语言·数据库·redis·缓存·学习笔记
※DX3906※3 小时前
Java排序算法--全面详解面试中涉及的排序
java·开发语言·数据结构·面试·排序算法
笨笨马甲3 小时前
Qt QSS使用指南
开发语言·qt
Nan_Shu_6144 小时前
学习: 尚硅谷Java项目之小谷充电宝(3)
java·后端·学习
智能工业品检测-奇妙智能4 小时前
AIFlowy如何实现与现有Spring Boot项目的无缝集成?
java·spring boot·后端
We་ct5 小时前
LeetCode 77. 组合:DFS回溯+剪枝,高效求解组合问题
开发语言·前端·算法·leetcode·typescript·深度优先·剪枝
格林威5 小时前
工业相机图像高速存储(C#版):内存映射文件方法,附Basler相机C#实战代码!
开发语言·人工智能·数码相机·c#·机器视觉·工业相机·堡盟相机