变量声明中的模式使用 | 学习笔记

简介: 快速学习变量声明中的模式使用

开发者学堂课程【Scala 核心编程 - 进阶变量声明中的模式使用学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/610/detail/9078


变量声明中的模式应用


变量声明中的模式

1.基本介绍

match 中每一个 case 都可以单独提取出来,意思是一样的。

来看下面的代码,不需要写 matchcase 语句,直接拿出来用。

2.应用案例

val(x, y)=(1,2)

val (q,r) = BigInt(10) /% 3    //说明q= BigInt(10) / 3 r = BigInt(10) % 3

val arr = Array(1,7,2,9)

val Array(first,second,_*) = arr

println(first,second)

//案例演示+说明

定义了两个变量,一个是x和y,有时候我们需要定义三个整型,速度很慢,所以直接用这种方式。

BigInt(10)/%3可以一步到位,相当于bigint(10)/3交给了q,把bigint(10)%3交给了r,分别对待。

比如有一个数组想要拆解一部分内容,将数组给一个val,把第一个1给 first,把7给second,其他给别的。该行意思就是要提出arr前两个元素

以上案例就可以快速的一次性定义多个变量,比较简洁。接着来运行,新建一个Scala Class为MarchVarDemo,粘贴以上代码,

代码完整如下:

package com.atguigu.chapter12

object MatchvarDemo {

def main(args : Array [string]): unit = {

val(x, y)=(1,2)

val (q,r) = BigInt(10) /% 3    //说明q= BigInt(10) / 3 r = BigInt(10) % 3

val arr = Array(1,7,2,9)

val Array(first,second,_*) = arr

println(first,second)

}

}

可以分别打印,在val(x, y)=(1,2)下添加printx,x直接为int。也可以新增一个z,例如val(x,y,z)=(1,2,”hello”),再打印输入println(z),z此时显示为String。

修改代码为

val(x,y,z)=(1,2,”hello”)

println(“x=” +x)

先来运行该功能,注释掉下面内容,查看结果为x=1,这就是一次性定义多个变量。

val (q,r) = BigInt(10) /% 3写法较少,/和%合并写,等价于q= BigInt(10) / 3 r = BigInt(10) % 3不进行演示。

再来看下一行,有一个数组(1,7,2,9),假如就想提取出第一个第二个,直接写

val Array(first,second,_*) = arr

println(first,second)

即可

运行结果为: (1,7)

以上就是所讲的变量声明模式。

相关文章
|
设计模式 算法 Java
工厂模式、模板模式和策略模式的混合使用
工厂模式又叫做工厂方法模式,是一种**创建型**设计模式,一般是在父类中提供一个创建对象的方法,允许子类决定实例化对象的类型。
260 0
工厂模式、模板模式和策略模式的混合使用
|
机器学习/深度学习 Python
垃圾分类模型训练部署教程,基于MaixHub和MaixPy-k210(2)
至此,我们就已经成功上传了其中一个类别的图片啦!按照上面的方式,我们可以继续上传其余每个类别的图片。 上传完所有类别的图片后,来到总览,可以大致浏览我们刚刚上传的图片。 接下来,就要用这些图片来训练用于垃圾分类的模型了!
606 0
|
定位技术 开发工具 开发者
为了让外卖小哥在地图里开上火箭🚀我用FLutter自定义了地图
花了五天时间,用Flutter自定义地图是什么体验?外卖小哥都开上火箭了?什么?我被女朋友赶出家门啦?欢迎观看被女友赶出家门之开火箭送外卖篇~
|
3月前
|
Java 数据库连接 网络安全
SSH框架的核心原理与工作流程解析
以上描述了SSH框架中各个部分的职责和大致的工作流程,详细运作时还涉及更多的组件和配置细节,每个部分都有相应的最佳实践和性能调优策略,但这些都建立在理解其核心原理基础之上。
400 11
|
3月前
|
存储 JSON 对象存储
零门槛玩转向量引擎!阿里云 Milvus 无代码全流程实操指南
阿里云Milvus版是企业级向量引擎,支持非结构化数据语义检索。全托管架构、开源兼容,助力智能驾驶、电商推荐、智能客服等场景实现毫秒级精准匹配,无代码操作让AI落地更高效。
432 0
|
4月前
|
数据采集 运维 监控
|
7月前
|
NoSQL 算法 安全
redis分布式锁在高并发场景下的方案设计与性能提升
本文探讨了Redis分布式锁在主从架构下失效的问题及其解决方案。首先通过CAP理论分析,Redis遵循AP原则,导致锁可能失效。针对此问题,提出两种解决方案:Zookeeper分布式锁(追求CP一致性)和Redlock算法(基于多个Redis实例提升可靠性)。文章还讨论了可能遇到的“坑”,如加从节点引发超卖问题、建议Redis节点数为奇数以及持久化策略对锁的影响。最后,从性能优化角度出发,介绍了减少锁粒度和分段锁的策略,并结合实际场景(如下单重复提交、支付与取消订单冲突)展示了分布式锁的应用方法。
578 3
|
JSON 缓存 JavaScript
使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)
使用 jsDelivr 加速 GitHub Pages 的图片资源和动态编译的 JSON 资源。
253 2
|
机器学习/深度学习 人工智能 自然语言处理
NVIDIA Triton系列03-开发资源说明
NVIDIA Triton 推理服务器是用于高效部署机器学习模型的开源工具。本文介绍了初学者如何通过官方文档和 GitHub 开源仓库获取开发资源,包括快速启动指南、生产文档、示例和反馈渠道。特别强调了核心仓库中的六个重要部分,涵盖服务器部署、核心功能、后端支持、客户端接口、模型分析和模型导航工具。这些资源有助于初学者全面了解和掌握 Triton 项目。
440 0
NVIDIA Triton系列03-开发资源说明
|
JavaScript 前端开发
前端 JS 经典:动态执行 JS
前端 JS 经典:动态执行 JS
196 0