快学Scala 读书笔记之 Chapter 2、3、4(控制结构函数,数组,映射,元组)
第二章 控制结构与函数
Scala和其他编程语言的一个根本性差异是,在C++或Java中,表达式和语句会看做两种不同的东西,表达式有值,而语句执行动作。在Scala中,几乎所有构造出来的语法结构都有值。
要点
- if表达式有值(if或else之后的值,如果没有定义else,且if条件不成立,则为Unit)
- 块的最后一个表达式为其值
- Scala的for循环就像增强版的Java for循环
- void类型是Unit
- 避免在函数定义里面使用return
- 函数定义中需要有 =
- 异常使用模式匹配来进行处理
- scala里面没有受检异常
第三章 数组相关操作
要点
- 若长度固定则使用Array,否则使用ArrayBuffer
- 提供初始值时不需要使用new
- 用()访问元素
- 用for(elem <- arr) 来遍历元素,有 0 untili (a.length, 2) 这种神奇的东西
用for(elem <- arr if …)..yield… 来将原数组转型为新数组
val a = Array(2, 3 , 5, 7, 11) val result = for (elem <- a) yield 2 * elem
- Scala数组和Java数组可以互操作,用ArrayBuffer,使用scala.collection.JavaConversions中的转换函数
第四章 映射和元组
要点
创建,查询,遍历映射,映射是对偶的集合
//不可变映射 val scores = Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8) //可变映射 val scores = scala.collection.mutable.Map("Alice" -> 10, "Bob" -> 3, "Cindy" -> 8) //空映射 val scores = new scala.collection.mutable.HashMap[String, Int] //获取映射中的值 val bobscore = scores("Bob") val bobscore = scores.getOrElse("Bob", 0) //否则返回0 //更新或新增或删除 scores("Bob") = 10 scores("Fred") = 7 scores += ("Bob" -> 10, "Fred" -> 7) scores -= "Alice" //迭代映射 for((k,v) <- 映射) 处理k和v //可以用于模式拼配
- 默认是哈希映射,不过也可以指明树形映射(Scala2.9没有可用的树形映射)
- Scala映射与Java映射的方便切换
元组可以用来聚集值
- 元组下标从1开始
zip
val symbols = Array("<", "-", ">") val counts = Array(2, 10, 2) val pairs = symbols.zip(counts) // Array(("<", 2), ("-", 10), (">", 2)) keys.zip(values).toMap
快学Scala 读书笔记之 Chapter 2、3、4(控制结构函数,数组,映射,元组)相关推荐
- 快学Scala 学习笔记-1: (第一章到第三章)
第一章. 1.1 Scala解释器(REPL) Scala> 8*5+2 res0: Int = 42 Scala> 0.5 * res0 res1: Double = 21.0 Scal ...
- 快学Scala学习笔记及习题解答(5-8类、对象、包和继承)
本文scala使用的版本是2.11.7 第五章 类 5.1 基本操作 class Person {// Scala会生成一个私有的final字段和一个getter方法,但没有setterval tim ...
- 快学Scala习题解答—第一章 基础
原文链接:http://blog.csdn.net/ivan_pig/article/details/8249768 ----------------------------------------- ...
- Scala学习4之快学scala第六章习题之6.6花色枚举
快学scala第六章习题之6.6花色枚举 6.6 编写一个扑克牌4种花色的枚举,让其toString方法分别返回♣,♦,♥,♠ 代码: </pre><pre name="c ...
- 《快学Scala》第14章——模式匹配和样例类 学习笔记
Scala有一个十分强大的模式匹配机制,可以应用在很多场合:switch语句.类型查询,以及"析构"(获取复杂表达式中的不同部分).除此之外,Scala还提供了样例类,对模式匹配进 ...
- 快学scala第二版笔记
第五章 类 getter和setter object HelloWorld {def main(args: Array[String]) {val p = new Personp.age = 10p. ...
- 快学Scala习题解答—第二章 控制结构和函数
原文地址:http://blog.csdn.net/ivan_pig/article/details/8253068 ----------------------------------------- ...
- 《Linux就该这么学》读书笔记
开源文档地址: https://www.linuxprobe.com/docs/LinuxProbe.pdf 对linux感兴趣的小伙伴可以移步到我的专栏:https://blog.csdn.net/ ...
- 《怪诞行为学》读书笔记
1.卢维斯定理 谦虚不是把自己想得很糟,而是完全不想自己. 提出者:美国心理学家卢维斯 点评:如果把自己想得太好,就很容易将别人想得很糟. 2.托利得定理 测验一个人的智力是否属于上乘,只看脑子 ...
最新文章
- web前端常识之浏览器原理
- linux lib lib64 区别,lib,lib32,lib64,libx32和libexec之间的区别
- (Sql Server)SQL FOR XML PATH
- ios审核4.3被拒,快速通过IOS4.3问题
- ediplus 复制编辑一列_vi编辑器的使用详解
- Java Enterprise软件与应有的内容
- [css] 如何解决html设置height:100%无效的问题?
- scala 高阶函数学习
- Java界面排号系统_【前端系统】javaweb技术的医院门诊在线预约及排号管理系统的实现...
- K - 最少拦截系统(动态规划)
- 【模式识别-北理工】02模式识别算法体系
- Android 签名板
- 【CAS】CAS原理
- bzoj2144 跳跳棋
- 【python】画折线图
- P1567 统计天数(洛谷)
- iOS 显示SVG文件的方法
- 【Ubuntu】Ubuntu如何实现中文输入?
- 识别不了移动硬盘的解决方法
- 谈ArcGIS分数标注的问题 分子分母形式
热门文章
- 数据科学导引——各国幸福指数聚类数据集的分析
- 05.ESP8266连接网络
- 上海大学计算机考研难,求知道上海大学计算机专业考研有哪些科目???
- python 拉普拉斯锐化_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化
- 并联串联混合的电压和电流_二极管串、并联图文分析,选对方案太重要了!
- GPRS/GPS模块组学习——服务器搭建之云服务器 ECS
- 发出警报声的c语言程序,PIC单片机警报声C程序
- win7系统,网络ID是灰色的。就是要看网络工作组计算机的那个“网络 ID”的那个按钮。
- r生成新的dataframe_R语言中数据框的定义与使用
- 常用的git操作指令