快学Scala 读书笔记之 Chapter 2、3、4(控制结构函数,数组,映射,元组)

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



http://www.chinasem.cn/article/1010595

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Java中的数组与集合基本用法详解

《Java中的数组与集合基本用法详解》本文介绍了Java数组和集合框架的基础知识,数组部分涵盖了一维、二维及多维数组的声明、初始化、访问与遍历方法,以及Arrays类的常用操作,对Java数组与集合相... 目录一、Java数组基础1.1 数组结构概述1.2 一维数组1.2.1 声明与初始化1.2.2 访问

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

关于集合与数组转换实现方法

《关于集合与数组转换实现方法》:本文主要介绍关于集合与数组转换实现方法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、Arrays.asList()1.1、方法作用1.2、内部实现1.3、修改元素的影响1.4、注意事项2、list.toArray()2.1、方

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

Java继承映射的三种使用方法示例

《Java继承映射的三种使用方法示例》继承在Java中扮演着重要的角色,它允许我们创建一个类(子类),该类继承另一个类(父类)的所有属性和方法,:本文主要介绍Java继承映射的三种使用方法示例,需... 目录前言一、单表继承(Single Table Inheritance)1-1、原理1-2、使用方法1-

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA