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 ...
随机推荐
- go build gcc报错 /usr/bin/ld | cannot find -ldl cannot find -lpthread cannot find -lc
之前一直在kali或者其他ubuntu设备编译sliver, 临时在centos7上编译时报错了 # github.com/bishopfox/sliver/server /usr/local/go/ ...
- golang获取windows版本和详细信息
场景: 将木马丢到感染机运行后回连时希望返回感染机的操作系统信息.golang 可以通过runtime.OS获取到操作系统类型,但是无法获取详细的版本信息,如win7 win10等, 解决方案; 下面 ...
- win32-读取控制台中所有的字符串
我们可以先读取字符串所占的行数,再乘以控制台的实际宽度 bool ReadFromConsole() { HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDL ...
- QT - Day 3
对话框 分类 模态对话框 QDialog dlg(this); dlg.resize(200,100); dlg.exec(); //窗口阻塞 非模态对话框 QDialog *dlg2 = new Q ...
- win32 - 将控制台输出重定向到txt文本上
这里需要两个app. parent.cpp #include <Windows.h> #include <stdio.h> int main() { SECURITY_ATTR ...
- Youpk 脱壳机脱壳原理分析
Youpk 是一个针对整体加固和Dex抽取加固壳的脱壳机 主要是基于虚拟机的,也就是基于VA的脱壳机, 相对FART出来的更晚一些, 厂商针对少一些, 脱壳位置相对更底层一些,还提供了Dex修复的工具 ...
- 【LeetCode回溯算法#01】图解组合问题
组合问题 力扣题目链接(opens new window) 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2 ...
- AI 让观众成为 3D 版《老友记》的导演了?
<老友记>上线 3D 版了? 允许用户旋转镜头,且从近景切换到全景观看故事? 今年出炉的 3D 方向 AI 项目 SitCom3D,能够自动补齐<老友记>原剧中的三维拍摄空间, ...
- FROM_UNIXTIME函数格式化时间戳日期类型
select FROM_UNIXTIME(bce.daysec_time/1000,'%Y-%m-%d %h:%i:%s') ,bce.* from biz_cvent bce where bce.d ...
- Java 泛型举例
1 package com.bytezero.genericity; 2 3 import org.junit.Test; 4 5 import java.util.*; 6 7 /** 8 * @a ...