Scala的模式匹配变量类型

news/2024/12/17 1:48:12/

在Scala模式匹配中,可以匹配多种变量类型。

 

基本数据类型

 

- 数值类型:像 Int 、 Double 等。例如,对一个 Double 类型变量进行匹配:

 

scala

val num: Double = 3.14

num match {

    case i: Int => println("是整数")

    case d: Double if d > 3.0 => println("大于3.0的小数")

    case _ => println("其他数值")

}

 

 

- 字符和布尔类型:

 

scala

val ch: Char = 'a'

ch match {

    case 'a' | 'e' | 'i' | 'o' | 'u' => println("是元音")

    case _ => println("不是元音")

}

val boolValue: Boolean = true

boolValue match {

    case true => println("是真")

    case false => println("是假")

}

 

 

复合数据类型

 

- 数组(Array):

 

scala

val array = Array(1, 2, 3)

array match {

    case Array(1, _, _) => println("数组第一个元素是1")

    case Array(_, 2, _) => println("数组第二个元素是2")

    case _ => println("其他数组")

}

 

 

- 列表(List)和序列(Seq):

 

scala

val list = List(4, 5, 6)

list match {

    case 1 :: Nil => println("只有元素1的列表")

    case x :: y :: Nil => println(s"有两个元素的列表,第一个是$x,第二个是$y")

    case _ => println("其他列表情况")

}

 

 

- 元组(Tuple):

 

scala

val tuple = (1, "twotwo")

tuple match {

    case (1, s) => println(s"第一个元素是1,第二个是字符串$s")

    case _ => println("其他元组情况")

}

 

 

自定义类型

 

- 假设定义了一个简单的 Person 类:

 

scala

class Person(val name: String, val age: Int)

val person = new Person("Alice", 25)

person match {

    case p if p.age > 20 => println(s"${p.name}年龄大于20")

    case _ => println("其他人员情况")

}


http://www.ppmy.cn/news/1555730.html

相关文章

Vue3+Node中使用webrtc推流至mediamtx

前言 项目的 Web 端是 Vue3 框架,后端是 GO 框架。需要实现将客户端的本地摄像头媒体流推送至服务端,而我自己从未有媒体流相关经验,最初 leader 让我尝试通过 RTSP 协议推拉流,我的思路就局限在了 RTSP 方向。 最初使用的服务端…

图论【Lecode_HOT100】

文章目录 1.岛屿数量No.2002.腐烂的橘子No.9943.课程表No.2074.实现Trie(前缀树)No.208 1.岛屿数量No.200 class Solution {public int numIslands(char[][] grid) {if (grid null || grid.length 0) {return 0;}int numIslands 0;int rows grid.len…

【新立电子】FPC材料的选择与性能优化

FPC柔性线路板,其材料的选择与性能优化,直接关系到电路板的整体性能、可靠性及应用范围,是电子工程师在设计和制造过程中必须高度重视的环节。 在材料选择上,FPC软性电路板倾向于采用高质量的基材、铜箔、覆盖膜及粘合剂。基材方…

一、使用 mdadm 工具在 Ubuntu 上创建 RAID 1(镜像)

在 Ubuntu 上创建 RAID 1(镜像)可以使用 mdadm 工具。以下是详细的步骤,包括安装必要的工具、创建 RAID 阵列、格式化并挂载 RAID 设备。 步骤一:安装 mdadm 首先确保你已经安装了 mdadm 包,这是管理软件 RAID 所需的…

MAC 头部、IPv4 头部、IPv6 头部、TCP 头部和 UDP 头部

MAC 头部 字段名称长度(字节)描述目标 MAC 地址6接收设备的 MAC 地址。源 MAC 地址6发送设备的 MAC 地址。以太网类型/长度2表示上层协议类型(如 IPv4、IPv6)或数据长度(以太网 II 或 802.3)。数据负载46-1…

IDEA关闭注释折叠

参考:IDEA关闭注释折叠(注释doc的rendered view模式)_idea toggle rendered view-CSDN博客

使用SourceTree登录gitlab

1.注册GitLab账号 2.创建令牌 个人设置里打开访问令牌》》个人访问令牌 点击创建一个新的令牌,根据需要设置权限,有效期可以不设置 点击,创建一个令牌,会生成一个令牌密码,一定要记录保存好,以后不会再显…

最少前缀操作问题--感受不到动态规划,怎么办怎么办

题目: 标签:动态规划(应该是双指针的,不理解) 小U和小R有两个字符串,分别是S和T,现在小U需要通过对S进行若干次操作,使其变成T的一个前缀。操作可以是修改S的某一个字符&#xff0…