第二章 控制结构与函数

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(控制结构函数,数组,映射,元组)相关推荐

  1. 快学Scala 学习笔记-1: (第一章到第三章)

    第一章. 1.1 Scala解释器(REPL) Scala> 8*5+2 res0: Int = 42 Scala> 0.5 * res0 res1: Double = 21.0 Scal ...

  2. 快学Scala学习笔记及习题解答(5-8类、对象、包和继承)

    本文scala使用的版本是2.11.7 第五章 类 5.1 基本操作 class Person {// Scala会生成一个私有的final字段和一个getter方法,但没有setterval tim ...

  3. 快学Scala习题解答—第一章 基础

    原文链接:http://blog.csdn.net/ivan_pig/article/details/8249768 ----------------------------------------- ...

  4. Scala学习4之快学scala第六章习题之6.6花色枚举

    快学scala第六章习题之6.6花色枚举 6.6 编写一个扑克牌4种花色的枚举,让其toString方法分别返回♣,♦,♥,♠ 代码: </pre><pre name="c ...

  5. 《快学Scala》第14章——模式匹配和样例类 学习笔记

    Scala有一个十分强大的模式匹配机制,可以应用在很多场合:switch语句.类型查询,以及"析构"(获取复杂表达式中的不同部分).除此之外,Scala还提供了样例类,对模式匹配进 ...

  6. 快学scala第二版笔记

    第五章 类 getter和setter object HelloWorld {def main(args: Array[String]) {val p = new Personp.age = 10p. ...

  7. 快学Scala习题解答—第二章 控制结构和函数

    原文地址:http://blog.csdn.net/ivan_pig/article/details/8253068 ----------------------------------------- ...

  8. 《Linux就该这么学》读书笔记

    开源文档地址: https://www.linuxprobe.com/docs/LinuxProbe.pdf 对linux感兴趣的小伙伴可以移步到我的专栏:https://blog.csdn.net/ ...

  9. 《怪诞行为学》读书笔记

    1.卢维斯定理 谦虚不是把自己想得很糟,而是完全不想自己.  提出者:美国心理学家卢维斯  点评:如果把自己想得太好,就很容易将别人想得很糟. 2.托利得定理  测验一个人的智力是否属于上乘,只看脑子 ...

最新文章

  1. web前端常识之浏览器原理
  2. linux lib lib64 区别,lib,lib32,lib64,libx32和libexec之间的区别
  3. (Sql Server)SQL FOR XML PATH
  4. ios审核4.3被拒,快速通过IOS4.3问题
  5. ediplus 复制编辑一列_vi编辑器的使用详解
  6. Java Enterprise软件与应有的内容
  7. [css] 如何解决html设置height:100%无效的问题?
  8. scala 高阶函数学习
  9. Java界面排号系统_【前端系统】javaweb技术的医院门诊在线预约及排号管理系统的实现...
  10. K - 最少拦截系统(动态规划)
  11. 【模式识别-北理工】02模式识别算法体系
  12. Android 签名板
  13. 【CAS】CAS原理
  14. bzoj2144 跳跳棋
  15. 【python】画折线图
  16. P1567 统计天数(洛谷)
  17. iOS 显示SVG文件的方法
  18. 【Ubuntu】Ubuntu如何实现中文输入?
  19. 识别不了移动硬盘的解决方法
  20. 谈ArcGIS分数标注的问题 分子分母形式

热门文章

  1. 数据科学导引——各国幸福指数聚类数据集的分析
  2. 05.ESP8266连接网络
  3. 上海大学计算机考研难,求知道上海大学计算机专业考研有哪些科目???
  4. python 拉普拉斯锐化_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化
  5. 并联串联混合的电压和电流_二极管串、并联图文分析,选对方案太重要了!
  6. GPRS/GPS模块组学习——服务器搭建之云服务器 ECS
  7. 发出警报声的c语言程序,PIC单片机警报声C程序
  8. win7系统,网络ID是灰色的。就是要看网络工作组计算机的那个“网络 ID”的那个按钮。
  9. r生成新的dataframe_R语言中数据框的定义与使用
  10. 常用的git操作指令