Scala 模式匹配拓展
1 package chapter08
2
3 object Test03_MatchTupleExtend {
4 def main(args: Array[String]): Unit = {
5 // 1. 在变量声明时匹配
6 val (x, y) = (10, "hello")
7 println(s"x: $x, y: $y")
8
9 val List(first, second, _*) = List(23, 15, 9, 78)
10 println(s"first: $first, second: $second")
11
12 val fir :: sec :: rest = List(23, 15 , 9, 78)
13 println(s"first: $fir, second: $sec, rest: $rest")
14
15 println("=====================")
16
17 // 2. for推导式中进行模式匹配
18 val list: List[(String, Int)] = List(("a", 12), ("b", 35), ("c", 27), ("a", 13))
19
20 // 2.1 原本的遍历方式
21 for (elem <- list){
22 println(elem._1 + " " + elem._2)
23 }
24
25 // 2.2 将List的元素直接定义为元组,对变量赋值
26 for ((word, count) <- list ){
27 println(word + ": " + count)
28 }
29
30 println("-----------------------")
31 // 2.3 可以不考虑某个位置的变量,只遍历key或者value
32 for ((word, _) <- list)
33 println(word)
34
35 println("-----------------------")
36
37 // 2.4 可以指定某个位置的值必须是多少
38 for (("a", count) <- list){
39 println(count)
40 }
41 }
42 }
Scala 模式匹配拓展的更多相关文章
- scala模式匹配的使用
Scala模式匹配 Tip1:模式总是从上往下匹配,如果匹配不到则匹配case_项(类似Java中的default) Tip2:与Java和C语言不同,不需要在每个分支末尾使用break语句退出(不会 ...
- scala模式匹配详细解析
一.scala模式匹配(pattern matching) pattern matching可以说是scala中十分强大的一个语言特性,当然这不是scala独有的,但这不妨碍它成为scala的语言的一 ...
- Spark记录-Scala模式匹配
Scala模式匹配 模式匹配是Scala函数值和闭包后第二大应用功能.Scala为模式匹配提供了极大的支持,处理消息. 模式匹配包括一系列备选项,每个替代项以关键字大小写为单位.每个替代方案包括一个模 ...
- Scala模式匹配和类型系统
1.模式匹配比java中的switch case强大很多,除了值,类型,集合等进行匹配,最常见的Case class进行匹配,Master.scala有大量的模式匹配. Case "_&qu ...
- scala模式匹配与样例类
样本类:添加了case的类便是样本类.这种修饰符可以让Scala编译器自动为这个类添加一些语法上的便捷设定.如下: 1.添加与类名一致的工厂方法.也就是说,可以写成Var("x") ...
- Scala模式匹配| 隐式转换
1. 模式匹配 Scala中的模式匹配类似于Java中的switch语法,但是更加强大.模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,当需要匹配时,会从第一个case分 ...
- scala 模式匹配详解 3 模式匹配的核心功能是解构
http://www.artima.com/scalazine/articles/pattern_matching.html这篇文章是odersky谈scala中的模式匹配的一段对话,我做了部分片段翻 ...
- scala 模式匹配详解 2 scala里是怎么实现的?
在这篇martin和另外两位模式匹配领域专家的论文里说了模式匹配的几种实现方式,以及scala是选择哪种方式来实现的.http://lampwww.epfl.ch/~emir/written/Matc ...
- scala 模式匹配详解 1
什么是模式? 一些刚从java转到scala的同学在开发的过程中犹如深陷沼泽,因为很多的概念或风格不确定,scala里有很多的坑,模式匹配也算一个.我整理了一下自己所理解的概念,以及一些例子.这个系列 ...
- Scala模式匹配常用
今天在工作中遇到的几个小问题,总结一下: 1.因为业务需要调用PHP的接口,获取到的返回体需要做一段逻辑处理,然而某个字段接收到的参数是io.serializable类型,字段的类型不是预期的stri ...
随机推荐
- win32-EnumChildWindows的使用
#include <Windows.h> #include <iostream> #include <string> static BOOL CALLBACK en ...
- 硬件开发笔记(十六):RK3568底板电路mipi摄像头接口原理图分析、mipi摄像头详解
前言 本篇继续分析底板原理图mipi电路原理图.mipi摄像头输入硬件接口详解. RK3568芯片摄像头接口 查看RK3568的芯片手册,摄像头接口并不支持直接sensor模拟信号输入,只 ...
- win终端利器-Cmder的安装使用
cmder 官网:https://cmder.app/ 安装 直接选择full版本下载,完成后解压即可 启动 直接双击Cmder.exe 如果每次都进入到 Cmder 解压目录双击 Cmder.exe ...
- picgo如何设置又拍云图床
1. 打开又拍云官网.正常注册,并且实名认证. 2. 选择产品,然后选择云存储,激活后进入控制台. 3. 创建云存储服务.注意服务名称.后续会用到 4. 新建一个操作员,并且给权限全部打勾. 添加好操 ...
- 【Azure 应用服务】Java ODBC代码中,启用 Managed Identity 登录 SQL Server 报错 Managed Identity authentication is not available
问题描述 在App Service中启用Identity后,使用系统自动生成 Identity. 使用如下代码连接数据库 SQL Server: SQLServerDataSource dataSou ...
- 【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
问题描述 在App Service for Linux环境中,部署Django应用,访问应用页面时候,出现css.js等静态资源文件加载失败问题. 浏览器Console提示的错误消息为: Refuse ...
- [Python] 通过md5去重 筛选文件代码
这是一些代码记录 这次是帮朋友恢复硬盘,扫描到的结果包含了好多个分区,通过将分区中的数据导出发现很多文件是重复的.所以想到通过python代码去重. 首先把所有分区的图片文件都放到一个文件夹A中,如果 ...
- 1. JVM体系结构
1. 前言 作为Java工程师 ,jvm对于 java的重要性不言而喻,但是 我们又对jvm了解多少 Java的跨平台性 java发布的口号 "一处编译到处运行 " 依赖于jvm, ...
- CPNtools协议建模安全分析(一)
本文根据最近整理的CPNtools论文和CPNtools官网上的说明,以及参照了乌克兰敖德萨 ---国家电信研究院运输和通信部关于 电信系统协议仿真关于CPNtools的学生讲义.基于此和和自己的 ...
- 学习ASP.NET Core Razor 编程系列文章目录
学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二--添加一个实体 学习ASP.NET Core Razor 编程系列三--创建数据表及创建项目 ...