快学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

相关文章

SpringBoot请求参数接收控制指南分享

《SpringBoot请求参数接收控制指南分享》:本文主要介绍SpringBoot请求参数接收控制指南,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Spring Boot 请求参数接收控制指南1. 概述2. 有注解时参数接收方式对比3. 无注解时接收参数默认位置

Spring Security+JWT如何实现前后端分离权限控制

《SpringSecurity+JWT如何实现前后端分离权限控制》本篇将手把手教你用SpringSecurity+JWT搭建一套完整的登录认证与权限控制体系,具有很好的参考价值,希望对大家... 目录Spring Security+JWT实现前后端分离权限控制实战一、为什么要用 JWT?二、JWT 基本结构

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Java枚举类实现Key-Value映射的多种实现方式

《Java枚举类实现Key-Value映射的多种实现方式》在Java开发中,枚举(Enum)是一种特殊的类,本文将详细介绍Java枚举类实现key-value映射的多种方式,有需要的小伙伴可以根据需要... 目录前言一、基础实现方式1.1 为枚举添加属性和构造方法二、http://www.cppcns.co

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python异步编程中asyncio.gather的并发控制详解

《Python异步编程中asyncio.gather的并发控制详解》在Python异步编程生态中,asyncio.gather是并发任务调度的核心工具,本文将通过实际场景和代码示例,展示如何结合信号量... 目录一、asyncio.gather的原始行为解析二、信号量控制法:给并发装上"节流阀"三、进阶控制