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

相关文章

基于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

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa

如何搭建并配置HTTPD文件服务及访问权限控制

《如何搭建并配置HTTPD文件服务及访问权限控制》:本文主要介绍如何搭建并配置HTTPD文件服务及访问权限控制的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、安装HTTPD服务二、HTTPD服务目录结构三、配置修改四、服务启动五、基于用户访问权限控制六、

JAVA数组中五种常见排序方法整理汇总

《JAVA数组中五种常见排序方法整理汇总》本文给大家分享五种常用的Java数组排序方法整理,每种方法结合示例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧... 目录前言:法一:Arrays.sort()法二:冒泡排序法三:选择排序法四:反转排序法五:直接插入排序前言:几种常用的Java数组排序

Python+PyQt5实现文件夹结构映射工具

《Python+PyQt5实现文件夹结构映射工具》在日常工作中,我们经常需要对文件夹结构进行复制和备份,本文将带来一款基于PyQt5开发的文件夹结构映射工具,感兴趣的小伙伴可以跟随小编一起学习一下... 目录概述功能亮点展示效果软件使用步骤代码解析1. 主窗口设计(FolderCopyApp)2. 拖拽路径

MySQL精准控制Binlog日志数量的三种方案

《MySQL精准控制Binlog日志数量的三种方案》作为数据库管理员,你是否经常为服务器磁盘爆满而抓狂?Binlog就像数据库的“黑匣子”,默默记录着每一次数据变动,但若放任不管,几天内这些日志文件就... 目录 一招修改配置文件:永久生效的控制术1.定位my.cnf文件2.添加核心参数不重启热更新:高手应

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

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

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