本文主要是介绍快学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(控制结构函数,数组,映射,元组)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!