计算机
类型
可以朗读
语音朗读
324千字
字数
2023-07-01
发行日期
展开全部
主编推荐语
一本涉及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、科普以及教材、教辅等领域。