展开全部

主编推荐语

一本涉及Scala 3基础知识与实际应用的实践指南。

内容简介

本书基于Scala3,不仅详细介绍了Scala有关的所有基础知识,包括入门基础、功能、语言本身、概念、工具、库、框架、类型、集合、类、方法、函数式编程技术等,还通过实际的代码示例展示了Scala3的语言优势和特点,并以问答形式提供了许多解决方案,包含250多个常见的Scala编程问题和1000多个基于真实场景的代码示例,覆盖了使用Scala3及其流行库时遇到的常见问题。

本书适合所有的Scala开发人员以及初级类库设计师阅读。

目录

  • 版权信息
  • O'Reilly Media,Inc.介绍
  • 业界评论
  • 译者序
  • 前言
  • 第1章 命令行
  • 1.1 初识Scala REPL
  • 1.2 在REPL中使用源代码和JAR文件
  • 1.3 初识Ammonite REPL
  • 1.4 scalac和scala命令
  • 1.5 反编译Scala代码
  • 1.6 运行JAR文件
  • 第2章 字符串
  • 2.1 字符串的相等性判断
  • 2.2 多行字符串的创建
  • 2.3 字符串的分割
  • 2.4 字符串的变量代入
  • 2.5 字符串输出的格式化
  • 2.6 字符串的逐个字符处理
  • 2.7 字符串的模式查找
  • 2.8 字符串的模式替换
  • 2.9 使用模式匹配提取字符串
  • 2.10 访问字符串中的单个字符
  • 2.11 自定义字符串插值器
  • 2.12 创建随机字符串
  • 第3章 数值和日期
  • 3.1 将字符串解析为数值
  • 3.2 数值类型间的转换
  • 3.3 覆盖默认的数值类型
  • 3.4 ++和--的替代方案
  • 3.5 浮点数的比较
  • 3.6 处理大数值
  • 3.7 生成随机数
  • 3.8 数值和货币的格式化
  • 3.9 创建新的日期和时间实例
  • 3.10 计算日期的差值
  • 3.11 日期的格式化
  • 3.12 将字符串解析为日期
  • 第4章 控制结构
  • 4.1 for循环
  • 4.2 多重for循环
  • 4.3 for循环中的守卫语句
  • 4.4 集合中的for/yield
  • 4.5 Scala中的“三元操作符”
  • 4.6 match表达式
  • 4.7 case的多条件匹配
  • 4.8 将match表达式的结果分配给变量
  • 4.9 访问match表达式的默认值
  • 4.10 match表达式与模式匹配
  • 4.11 match表达式与枚举和样例类
  • 4.12 case中的守卫语句
  • 4.13 match表达式与isInstanceOf
  • 4.14 match表达式与List
  • 4.15 用try/catch匹配一个或多个异常
  • 4.16 try/catch/finally
  • 4.17 创建自定义控制结构
  • 第5章 类
  • 5.1 挑选合适的领域建模工具
  • 5.2 创建主构造函数
  • 5.3 控制构造函数字段的可见性
  • 5.4 定义辅助构造函数
  • 5.5 定义私有的主构造函数
  • 5.6 构造函数参数的默认值
  • 5.7 类继承时的构造函数
  • 5.8 调用父类的构造函数
  • 5.9 定义equals方法(对象相等性)
  • 5.10 阻止生成访问方法和修改方法
  • 5.11 覆盖默认的访问方法和修改方法
  • 5.12 将代码块或函数赋值给惰性字段
  • 5.13 设置未初始化的var字段
  • 5.14 样例类产生的模板代码
  • 5.15 定义样例类的辅助构造函数
  • 第6章 特质和枚举
  • 6.1 特质的接口用法
  • 6.2 定义特质的抽象字段
  • 6.3 特质的抽象类用法
  • 6.4 特质的混入用法
  • 6.5 多特质同名方法处理与super关键字
  • 6.6 限制特质的拓展(仅支持特定类型的子类)
  • 6.7 限制特质的拓展(仅支持具有特定方法的类型)
  • 6.8 限制特质的拓展(仅支持特定的类)
  • 6.9 使用参数化特质
  • 6.10 特质的构造参数
  • 6.11 特质与模块
  • 6.12 用枚举创建命名值的集
  • 6.13 用枚举建模ADT
  • 第7章 对象
  • 7.1 对象的强制转换
  • 7.2 用classOf方法传递Class类型
  • 7.3 用object创建单例对象
  • 7.4 用伴生对象创建静态成员
  • 7.5 用apply方法作为构造函数
  • 7.6 用apply方法实现静态工厂
  • 7.7 将特质具体化成对象
  • 7.8 unapply方法与模式匹配
  • 第8章 方法
  • 8.1 控制方法的作用域
  • 8.2 调用父类或特质的方法
  • 8.3 调用方法时使用参数名称
  • 8.4 设置参数的默认值
  • 8.5 可变参数
  • 8.6 无括号的方法调用
  • 8.7 声明异常
  • 8.8 支持链式调用风格
  • 8.9 扩展方法
  • 第9章 包和导入
  • 9.1 大括号风格的包语法
  • 9.2 导入一个或多个成员
  • 9.3 导入并重命名成员
  • 9.4 导入时隐藏类
  • 9.5 导入静态成员
  • 9.6 无处不在的导入语句
  • 9.7 导入given
  • 第10章 函数式编程
  • 10.1 使用函数字面量(匿名函数)
  • 10.2 将函数作为变量传递
  • 10.3 将函数作为方法的参数
  • 10.4 声明高阶函数
  • 10.5 使用部分应用函数
  • 10.6 创建返回函数的方法
  • 10.7 创建偏函数
  • 10.8 实现函数式错误处理
  • 10.9 实际案例:在算法中传递函数
  • 10.10 实际案例:函数式领域建模
  • 第11章 集合:介绍
  • 11.1 选择合适的集合类
  • 11.2 集合的性能对比
  • 11.3 不可变集合与可变变量
  • 11.4 创建惰性视图
  • 第12章 集合:序列类
  • 12.1 Vector
  • 12.2 创建并填充List
  • 12.3 List的添加操作
  • 12.4 List和ListBuffer的删除操作
  • 12.5 使用ListBuffer创建可变列表
  • 12.6 LazyList
  • 12.7 ArrayBuffer
  • 12.8 Array和ArrayBuffer的删除操作
  • 12.9 创建并更新数组
  • 12.10 创建多维数组
  • 12.11 数组排序
  • 第13章 集合:常见的序列方法
  • 13.1 选择合适的集合方法
  • 13.2 foreach方法
  • 13.3 迭代器
  • 13.4 zipWithIndex和zip方法
  • 13.5 map方法
  • 13.6 flatten方法
  • 13.7 filter方法
  • 13.8 从集合中提取元素序列
  • 13.9 序列的拆分
  • 13.10 reduce和fold方法
  • 13.11 序列的去重
  • 13.12 序列的合并
  • 13.13 序列的随机化
  • 13.14 集合排序
  • 13.15 mkString和addString方法
  • 第14章 集合:映射
  • 14.1 创建和使用映射
  • 14.2 选择合适的映射
  • 14.3 不可变映射的添加、更新和删除操作
  • 14.4 可变映射的添加、更新和删除操作
  • 14.5 安全访问映射值
  • 14.6 测试映射中键或值的存在
  • 14.7 从映射中获取所有的键或值
  • 14.8 寻找映射中最大和最小的键或值
  • 14.9 映射的遍历
  • 14.10 根据键或值对映射排序
  • 14.11 映射的过滤
  • 第15章 集合:元组、范围、集、栈和队列
  • 15.1 元组与异构列表
  • 15.2 创建范围
  • 15.3 创建集并向其添加元素
  • 15.4 集的删除操作
  • 15.5 有序集
  • 15.6 创建和使用栈
  • 15.7 创建和使用队列
  • 第16章 文件和进程
  • 16.1 文本文件的读取
  • 16.2 文本文件的写入
  • 16.3 二进制文件的读写
  • 16.4 将字符串伪装为文件
  • 16.5 对象和文件间的序列化/反序列化
  • 16.6 目录的遍历
  • 16.7 执行外部命令
  • 16.8 执行外部命令并读取标准输出
  • 16.9 命令的标准输出和标准错误输出
  • 16.10 构建外部命令的管道
  • 第17章 sbt
  • 17.1 新建sbt项目
  • 17.2 用sbt命令构建项目
  • 17.3 了解build.sbt语法风格
  • 17.4 编译、运行和打包Scala项目
  • 17.5 其他sbt命令
  • 17.6 持续的编译和测试
  • 17.7 依赖管理
  • 17.8 托管依赖的版本控制
  • 17.9 API文档的生成
  • 17.10 指定sbt运行的mainClass
  • 17.11 部署一个可执行的JAR文件
  • 17.12 发布类库
  • 第18章 Scala Future和Akka actor的并发
  • 18.1 创建Future
  • 18.2 Future的回调和转换方法
  • 18.3 返回Future的方法
  • 18.4 多个Future的并行执行
  • 18.5 创建面向对象风格的actor
  • 18.6 创建函数式风格的actor
  • 18.7 向actor发消息
  • 18.8 创建有多种状态的actor
  • 第19章 Play框架和Web服务
  • 19.1 创建Play项目
  • 19.2 创建Play的Web API
  • 19.3 返回JSON的GET请求
  • 19.4 将Scala对象序列化成JSON
  • 19.5 将JSON反序列化成Scala对象
  • 19.6 在非Play项目中使用Play JSON库
  • 19.7 初识sttp
  • 第20章 Apache Spark
  • 20.1 初识Spark
  • 20.2 将文件读入RDD
  • 20.3 将CSV读入RDD
  • 20.4 DataFrame
  • 20.5 将数据文件读入DataFrame
  • 20.6 针对多个文件的Spark SQL查询
  • 20.7 Spark批处理程序
  • 第21章 Scala.js、GraalVM和jpackage
  • 21.1 初识Scala.js
  • 21.2 使用Scala.js响应事件
  • 21.3 使用Scala.js构建单页面应用
  • 21.4 使用GraalVM构建原生的可执行文件
  • 21.5 使用jpackage构建应用
  • 第22章 Scala与Java集成
  • 22.1 在Scala中使用Java的集合
  • 22.2 在Java中使用Scala的集合
  • 22.3 在Scala中使用Java的Optional值
  • 22.4 在Java中使用Scala的Option值
  • 22.5 在Java中使用Scala的特质
  • 22.6 在Scala中使用Java的接口
  • 22.7 @throws注解
  • 22.8 @varargs注解
  • 22.9 @SerialVersionUID和其他注解
  • 第23章 类型
  • 23.1 泛型方法
  • 23.2 泛型类
  • 23.3 不可变泛型参数的协变
  • 23.4 元素类型可变化的类
  • 23.5 类的泛型类型边界
  • 23.6 duck类型(结构化类型)
  • 23.7 不透明类型与类型名称
  • 23.8 given和using的术语推断
  • 23.9 并集类型与动态类型
  • 23.10 类型的组合
  • 23.11 通过跨界相等性比较类
  • 23.12 CanEqual类型族
  • 第24章 最佳实践
  • 24.1 纯函数
  • 24.2 不可变量与集合
  • 24.3 表达式
  • 24.4 match表达式与模式匹配
  • 24.5 消除null值
  • 24.6 Option、Try和Either
  • 24.7 构建模块化系统
  • 24.8 高阶函数与Option值
  • 作者简介
  • 封面简介
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

机械工业出版社

机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。