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")
//}

}
相关推荐
ZWZhangYu30 分钟前
从 Dify 实践理解大模型上下文缓存
java·后端·spring
小熊恋旧34 分钟前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合35 分钟前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J35 分钟前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net1 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
考虑考虑2 小时前
瀚高数据库
数据库·后端·postgresql
晗夜未央2 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>2 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
锋行天下2 小时前
DeepSeek写Langgraph就是个大傻逼,一本正经胡说八道
前端·人工智能·后端
努力努力再努力wz2 小时前
【Lua 入门系列】Lua 函数深入理解:函数对象、多返回值、可变参数、闭包、递归与尾调用优化
开发语言·lua