当前位置: 首页 > news >正文

模式匹配类型

一、匹配常量

在scala中,模式匹配可以匹配所有的字面量,包括字符串,字符,数字,布尔值等等

 def describeConst(x:Any):String = x match {case "str" => "匹配字符串"case '+' => "匹配字符"case 1 => "匹配整数"case true => "匹配布尔值"case a => s"匹配$a"}println(describeConst("str"))println(describeConst('+'))println(describeConst(1))println(describeConst(true))println(describeConst('-'))

在这里插入图片描述

二、匹配类型

   def describeType(x:Any):String = x match {case x:String => "匹配字符串"case x:Char => "匹配字符"case x:Int => "匹配整数"case x:Boolean => "匹配布尔值"case list:List[String] => "List" + listcase array:Array[Int] => "Array" + array.mkString("\t")case a => s"匹配$a"}println(describeType("str"))println(describeType('+'))println(describeType(1))println(describeType(true))println(describeType(List("a","b","c")))// 泛型擦除println(describeType(List(1,2,3,4,5)))println(describeType(Array(1,2,3,4,5)))// array不存在泛型擦除println(describeType(Array("1","2")))

在这里插入图片描述

三、匹配集合类型

代码:

for (arr <- List(Array(0),Array(1,0),Array(0,1,0),Array(1,1,0),Array(2,3,7,15),Array("hello","a",30))){val result = arr match{case Array(0) => "0"case Array(1,0) => "Array(1,0)"case Array(x,y) => "Array: " + x + ", " + ycase Array(0,_*) => "以0开头的数组"case Array(x,1,z) => "中间为1的三元素数组"case _ => "Something else"}println(result)}

结果:

在这里插入图片描述

  for(list <- List(List(0),List(1,0),List(0,0,0),List(1,1,0),List(88),List("hello"))){val result = list match {case List(0) => "0"case List(x,y) => "List(x,y): " + x + ", " + ycase List(0,_*) => "List(0,..."case List(a) => "List(a):" + acase _ => "something else"}println(result)}

结果:

在这里插入图片描述

代码:

  val list1 = List(1,2,5,7,24)val list = List(24)list match {case first :: second :: rest => println(s"first:$first, second:$second , rest: $rest")case _ => println("something else")}list1 match {case first :: second :: rest => println(s"first:$first, second:$second , rest: $rest")case _ => println("something else")}

结果:

在这里插入图片描述

  for (tuple <- List((0,1),(0,0),(0,1,0),(0,1,1),(1,23,56),("hello",true,0.5))){val result = tuple match {case (a,b) => ""  + a + ", " + bcase (0,_) => "(0, _)"case (a,1,_) => "(a,1,_) " +acase _ => "something else"}println(result)}

结果:

在这里插入图片描述

在变量声明时匹配:

    val (x,y) = (10,"hello")println(s"x:$x,y:$y")val List(first,second,_*) = List(23,15,9,78)println(s"first:$first,second:$second")val fir :: sec :: rest = List(23,15,9,78)println(s"first:$fir,second:$sec,rest:$rest")

在这里插入图片描述

for推导式中进行模式匹配

将List的元素直接定义为元组,对变量赋值

  val list = List(("a",12),("b",35),("c",27))for ((word,count) <- list){println(word + " " + count)}

在这里插入图片描述

可以不考虑某个位置的变量,只遍历key或者value

    val list = List(("a",12),("b",35),("c",27))for ((word,_) <- list)println(word)

在这里插入图片描述

可以指定某个位置的值必须是多少

  val list = List(("a",12),("b",35),("c",27),("a",99))for(("a",count) <- list){println(count)}

在这里插入图片描述

四、匹配对象及样例类


package scala
object User {def main(args: Array[String]): Unit = {val student = Student("alice",19)val result = student match {case Student("alice",19) => "Alice, 19"case _ => "Else"}println(result)}case class Student(name:String,age:Int)}

在这里插入图片描述

相关文章:

模式匹配类型

一、匹配常量 在scala中&#xff0c;模式匹配可以匹配所有的字面量&#xff0c;包括字符串&#xff0c;字符&#xff0c;数字&#xff0c;布尔值等等 def describeConst(x:Any):String x match {case "str" > "匹配字符串"case > "匹配字符&…...

每天10个vue面试题(七)

1、Vue如何监听页面url中hash变化&#xff1f; 监听 $route 的变化&#xff1a;在Vue中&#xff0c;你可以使用watch属性来监听$route的变化。当路由发生变化时&#xff0c;会执行相应的处理函数。使用 window.location.hash&#xff1a;直接读取window.location.hash的值。这…...

如何在Linux系统中使用Apache HTTP Server

如何在Linux系统中使用Apache HTTP Server Apache简介 安装Apache 在Debian/Ubuntu系统中安装 在CentOS/RHEL系统中安装 启动Apache服务 验证Apache是否正在运行 访问Apache默认页面 配置Apache虚拟主机 创建虚拟主机配置文件 示例虚拟主机配置 创建网站根目录 准备静态网站内…...

C++基于opencv的视频质量检测--画面冻结检测

文章目录 0.引言1. 原始代码分析2. 优化方案3. 优化后的代码4. 代码详细解读 0.引言 视频质量画面冻结检测已在C基于opencv4的视频质量检测中有所介绍&#xff0c;本文将详细介绍其优化版本。 1. 原始代码分析 图像抖动检测的原始代码&#xff1a; bool ScreenFreezeDetect…...

Day22 opencv图像预处理

图像预处理 在计算机视觉和图像处理领域&#xff0c;图像预处理是一个重要的步骤&#xff0c;它能够提高后续处理&#xff08;如特征提取、目标检测等&#xff09;的准确性和效率。OpenCV 提供了许多图像预处理的函数和方法&#xff0c;常见的操作包括图像空间转换、图像大小调…...

QT中的定时器与计时器

目录 QTimer QTimer 的替代方案 API QElapsedTimer API 笔者写Qt的时候经常遇到需要定时完成任务的情况。举个例子&#xff1a;我写串口通信程序的时候需要定时向下位机发送数据。或者是定时任务周期性出发&#xff08;更新时间等&#xff09; 在Qt中&#xff0c;有两个非…...

国内AI大模型学习平台

据不完全统计&#xff0c;目前&#xff0c;国内有几大AI大模型学习平台可供选择&#xff1a; 1.昇思大模型平台&#xff1a;这是一个集算法选型、创意分享、模型实验和大模型在线体验于一体的AI学习与实践社区。 2.魔搭社区&#xff1a;提供AI模型、数据集和应用的开发与探索平…...

曹操出行借助 ApsaraMQ for Kafka Serverless 提升效率,成本节省超 20%

本文整理于 2024 年云栖大会主题演讲《云消息队列 ApsaraMQ Serverless 演进》&#xff0c;杭州优行科技有限公司消息中间件负责人王智洋分享 ApsaraMQ for Kafka Serverless 助力曹操出行实现成本优化和效率提升的实践经验。 曹操出行&#xff1a;科技驱动共享出行未来 曹操…...

深入理解数据库的三范式

数据库设计中的范式&#xff08;Normal Form&#xff09;是用于规范数据存储结构、消除冗余以及保证数据一致性的重要原则。范式的概念有多种层次&#xff0c;常用的前三种称为第一范式&#xff08;1NF&#xff09;、第二范式&#xff08;2NF&#xff09;和第三范式&#xff08…...

P11233 [CSP-S 2024] 染色

P11233 [CSP-S 2024] 染色 难度&#xff1a;提高/省选-。 考点&#xff1a;DP。 题意&#xff1a; 给定 n n n 个数 A i A_i Ai​&#xff0c;对 A i A_i Ai​ 进行染色&#xff0c;只有两种颜色。设 C C C 为 A A A 染色后的数组。 如果 A i A_i Ai​ 左侧没有预期同…...

图传推流学习(敬请期待)

图传推流简介 1.RTSP、RTP与RTCP2.搭建rtsp服务器&#xff08;资源下载&#xff09;3.搭建rtsp服务器&#xff08;搭建过程&#xff09; 1.RTSP、RTP与RTCP RTSP&#xff08;Real Time Streaming Protocol&#xff09;、RTP&#xff08;Real-time Transport Protocol&#xff0…...

【JavaGuide】十大经典排序算法总结

冒泡排序 算法步骤 不断的两两比较&#xff0c;这样当前最大的元素总是会排在最后面。所以称为冒泡。 图解算法 代码实现 public static int[] bubbleSort(int[] arr) {// i是排好了几个数for (int i 1; i < arr.length; i) {// flag标记当前循环是否调整了顺序&#xff0c…...

程序中怎样用最简单方法实现写excel文档

很多开发语言都能找到excel文档读写的库&#xff0c;但是在资源极其受限的环境下开发&#xff0c;引入这些库会带来兼容性问题。因为一个小功能引入一堆库&#xff0c;我始终觉得划不来。看到有项目引用的jar包有一百多个&#xff0c;看着头麻&#xff0c;根本搞不清谁依赖谁。…...

《机器学习与人类学习:比较、融合与未来展望》

《机器学习与人类学习&#xff1a;比较、融合与未来展望》 一、引言二、机器学习的概念与发展&#xff08;一&#xff09;机器学习的定义与分类&#xff08;二&#xff09;机器学习的发展历程&#xff08;三&#xff09;机器学习的应用领域 三、人类学习的本质与过程&#xff0…...

Mysql 8.4.3LTS 的离线部署

文章目录 一、部署环境资源配置 二、下载地址版本选择 三、部署详情1. 上传安装包2. 解压软件包3. 安装mysql3.3.1 创建mysql用户与用户组3.3.2 授权安装文件夹3.3.3 安装libaio依赖 &#xff08;坑&#xff09;ubuntu24.04 中关于libaio的坑 3.3.4 初始化Mysql数据库3.3.5 编辑…...

h5项目打包上线报错404文件找不到

配置一下路由就可以了 1.找到项目里的这个文件 2.滑到最下面‘源码视图’ 3.找到base&#xff0c;没有的话写上一个&#xff0c;保存后打包就可以了 "h5" : {"router" : {"base" : "./"}}...

mysql上课总结(5)(MySQL的完整性约束(详细介绍))

目录 一、完整性约束。 &#xff08;1&#xff09;概念与目的。 <1>概念。 <2>目的。 &#xff08;2&#xff09;各个约束的详细&#xff08;表格&#xff09; &#xff08;3&#xff09;各个约束的简要总结。 <1>主键约束。 <2>唯一约束。 <3>非…...

复原IP地址

分割字符串的姐妹题 题目&#xff1a;93. 复原 IP 地址 - 力扣&#xff08;LeetCode&#xff09; 题解&#xff1a;代码随想录 代码&#xff1a; class Solution {List<String> resnew ArrayList<>();public List<String> restoreIpAddresses(String s) …...

Effective C++ 学习笔记二

Effective C 学习笔记二 文章目录 Effective C 学习笔记二别让异常逃离析构函数绝不在构造和析构的过程中调用virtual函数令operator 返回一个reference to *this在operator中处理"自我赋值"C四种转换 别让异常逃离析构函数 C 并不禁止析构函数吐出异常&#xff0c;…...

以「JIMUMETA元宇宙体验馆」为例,探讨有哪些元宇宙场景?

让我们以「JIMUMETA元宇宙体验馆」为例&#xff0c;深入探讨元宇宙场景中提供的产品与服务。该体验馆由视创云展精心打造&#xff0c;集成了企业主展馆、元宇宙虚拟活动分会场、品牌展示分会场、线上论坛会场以及会议室接待会客等多重功能&#xff0c;旨在全方位满足企业发布会…...

NSC_BUILDER:全能Switch文件处理工具的深度应用指南

NSC_BUILDER&#xff1a;全能Switch文件处理工具的深度应用指南 【免费下载链接】NSC_BUILDER Nintendo Switch Cleaner and Builder. A batchfile, python and html script based in hacbuild and Nuts python libraries. Designed initially to erase titlerights encryption…...

MelonLoader完全解决方案:Unity游戏Mod加载实战指南

MelonLoader完全解决方案&#xff1a;Unity游戏Mod加载实战指南 【免费下载链接】MelonLoader The Worlds First Universal Mod Loader for Unity Games compatible with both Il2Cpp and Mono 项目地址: https://gitcode.com/gh_mirrors/me/MelonLoader 当你兴致勃勃地…...

【RT-DETR涨点改进】TGRS 2026 | 全网独家创新、特征融合改进篇| 引入STSAM协同时空注意力融合模块,发论文热点创新,注意力能够互相引导强化边界和结构细节,增强目标检测高效涨点

一、本文介绍 🔥本文给大家介绍使用 STSAM协同时空注意力融合模块 改进RT-DETR网络模型,STSAM 是 空间域特征增强模块,通过全局跨时相注意力和局部坐标注意力的并行处理,能有效聚焦真实变化目标,强化边界和结构细节,同时兼顾训练稳定性,为后续浅层特征融合提供高质量特…...

阿里云RDSClaw:给OpenClaw装上超级记忆和超级大脑,会怎样?

RDSClaw 喊你领取免费试用了&#xff01;点击下方训练营&#xff0c;可领取免费试用&#xff0c;跟随训练营中的课程可轻松部署你的专属小龙虾&#xff01; 训练营报名链接&#xff1a;养虾训练营- RDSClaw_阿里云培训中心-阿里云 参营福利&#xff1a;完成RDSClaw实操部署&a…...

Phi-4-mini-reasoning企业知识库接入:PDF解析+向量化+推理问答闭环

Phi-4-mini-reasoning企业知识库接入&#xff1a;PDF解析向量化推理问答闭环 1. 模型简介与部署验证 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型&#xff0c;专注于高质量、密集推理的数据处理能力。作为Phi-4模型家族成员&#xff0c;它特别强化了数学推…...

Wan2.2-I2V-A14B参数详解:--output路径修改与/workspace目录结构说明

Wan2.2-I2V-A14B参数详解&#xff1a;--output路径修改与/workspace目录结构说明 1. 镜像概述与核心功能 Wan2.2-I2V-A14B是一款专为文生视频任务优化的私有部署镜像&#xff0c;基于RTX 4090D 24GB显存显卡深度调优。这个镜像最大的特点是开箱即用&#xff0c;内置了完整的运…...

你还在用for循环清洗CSV?Polars 2.0的scan_csv()+expression DSL已支持自动列式推断与零拷贝转换——立即升级避免被淘汰

第一章&#xff1a;Polars 2.0大规模数据清洗的核心范式变革Polars 2.0 不再将数据清洗视为一系列离散的、命令式的转换操作&#xff0c;而是以“惰性执行图列式语义优先”为基石&#xff0c;重构整个清洗生命周期。其核心变革体现在计算模型、内存管理与API设计三重维度的协同…...

SAP-MM 公司间STO实战:从主数据到收货的完整配置与流程解析

1. 公司间STO的核心概念与业务场景 第一次接触公司间库存转储订单(STO)时&#xff0c;我误以为它和普通采购订单差不多。直到实际配置时才发现&#xff0c;这里面的门道可不少。简单来说&#xff0c;公司间STO就是集团内部不同法人公司之间的库存调拨业务&#xff0c;但会计上需…...

AI Agent开发实战系列 - LangGraph(8): 利用add_conditional_edges构建智能决策工作流

1. 理解LangGraph中的条件决策机制 在AI Agent开发中&#xff0c;动态决策能力是区分普通流程和智能系统的关键。LangGraph提供的add_conditional_edges方法就像给工作流装上了"智能导航系统"——我最近在客服工单系统中实践时发现&#xff0c;传统硬编码的分流规则需…...

别再浪费手机性能了!Blackmagic Camera 搭配 LUT 滤镜包,解锁夜景和人物拍摄的隐藏技巧

Blackmagic Camera 与 LUT 滤镜包&#xff1a;解锁手机摄影的隐藏潜力 手机摄影早已不再是简单的记录工具&#xff0c;而是可以创作出专业级影像的利器。对于追求画质的摄影爱好者和小型工作室来说&#xff0c;Blackmagic Camera 这款专业级拍摄应用配合精心调校的 LUT 滤镜包&…...