Scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala运行于JVM之上,因此它可以访问任何Java类库并且与Java框架进行互操作。本书从实用角度出发,给出了一份快速的、基于代码的入门指南。Horstmann以“博客文章大小”的篇幅介绍了Scala的概念,让你可以快速地掌握和应用。实际上手的操作,清晰定义的能力层次,从初级到专家级,全程指导。
本书适合有一定的Java编程经验、对Scala感兴趣,并希望尽快掌握Scala核心概念和用法的开发者阅读。
目录
序
前言
关于作者
1 基础 [A1]
1.1 Scala解释器
1.2 声明值和变量
1.3 常用类型
1.4 算术和操作符重载
1.5 调用函数和方法
1.6 apply方法
1.7 Scaladoc
练习
2 控制结构和函数 [A1]
2.1 条件表达式
2.2 语句终止
2.3 块表达式和赋值
2.4 输入和输出
2.5 循环
2.6 高级for循环和for推导式
2.7 函数
2.8 默认参数和带名参数 [L1]
2.9 变长参数 [L1]
2.10 过程
2.11 懒值 [L1]
2.12 异常
练习
3 数组相关操作 [A1]
3.1 定长数组
3.2 变长数组:数组缓冲
3.3 遍历数组和数组缓冲
3.4 数组转换
3.5 常用算法
3.6 解读Scaladoc
3.7 多维数组
3.8 与Java的互操作
练习
4 映射和元组 [A1]
4.1 构造映射
4.2 获取映射中的值
4.3 更新映射中的值
4.4 迭代映射
4.5 已排序映射
4.6 与Java的互操作
4.7 元组
4.8 拉链操作
练习
5 类 [A1]
5.1 简单类和无参方法
5.2 带getter和setter的属性
5.3 只带getter的属性
5.4 对象私有字段
5.5 Bean属性 [L1]
5.6 辅助构造器
5.7 主构造器
5.8 嵌套类 [L1]
练习
6 对象 [A1]
6.1 单例对象
6.2 伴生对象
6.3 扩展类或特质的对象
6.4 apply方法
6.5 应用程序对象
6.6 枚举
练习
7 包和引入 [A1]
7.1 包
7.2 作用域规则
7.3 串联式包语句
7.4 文件顶部标记法
7.5 包对象
7.6 包可见性
7.7 引入
7.8 任何地方都可以声明引入
7.9 重命名和隐藏方法
7.10 隐式引入
练习
8 继承 [A1]
8.1 扩展类
8.2 重写方法
8.3 类型检查和转换
8.4 受保护字段和方法
8.5 超类的构造
8.6 重写字段
8.7 匿名子类
8.8 抽象类
8.9 抽象字段
8.10 构造顺序和提前定义 [L3]
8.11 Scala继承层级
8.12 对象相等性 [L1]
练习
9 文件和正则表达式 [A1]
9.1 读取行
9.2 读取字符
9.3 读取词法单元和数字
9.4 从URL或其他源读取
9.5 读取二进制文件
9.6 写入文本文件
9.7 访问目录
9.8 序列化
9.9 进程控制 [A2]
9.10 正则表达式
9.11 正则表达式组
练习
10 特质 [L1]
10.1 为什么没有多重继承?
10.2 当作接口使用的特质
10.3 带有具体实现的特质
10.4 带有特质的对象
10.5 叠加在一起的特质
10.6 在特质中重写抽象方法
10.7 当作富接口使用的特质
10.8 特质中的具体字段
10.9 特质中的抽象字段
10.10 特质构造顺序
10.11 初始化特质中的字段
10.12 扩展类的特质
10.13 自身类型 [L2]
10.14 背后发生了什么
练习
11 操作符 [L1]
11.1 标识符
11.2 中置操作符
11.3 一元操作符
11.4 赋值操作符
11.5 优先级
11.6 结合性
11.7 apply和update方法
11.8 提取器 [L2]
11.9 带单个参数或无参数的提取器 [L2]
11.10 unapplySeq方法
练习
12 高阶函数 [L1]
12.1 作为值的函数
12.2 匿名函数
12.3 带函数参数的函数
12.4 参数(类型)推断
12.5 一些有用的高阶函数
12.6 闭包
12.7 SAM转换
12.8 柯里化
12.9 控制抽象
12.10 return表达式
练习
13 集合 [A2]
13.1 主要的集合特质
13.2 可变和不可变集合
13.3 序列
13.4 列表
13.5 可变列表
13.6 集
13.7 用于添加或去除元素的操作符
13.8 常用方法
13.9 将函数映射到集合
13.10 化简、折叠和扫描 [A3]
13.11 拉链操作
13.12 迭代器
13.13 流 [A3]
13.14 懒视图
13.15 与Java集合的互操作
13.16 线程安全的集合
13.17 并行集合
练习
14 模式匹配和样例类 [A2]
14.1 更好的switch
14.2 守卫
14.3 模式中的变量
14.4 类型模式
14.5 匹配数组、列表和元组
14.6 提取器
14.7 变量声明中的模式
14.8 for表达式中的模式
14.9 样例类
14.10 copy方法和带名参数
14.11 case语句中的中置表示法
14.12 匹配嵌套结构
14.13 样例类是邪恶的吗?
14.14 密封类
14.15 模拟枚举
14.16 Option类型
14.17 偏函数 [L2]
练习
15 注解 [A2]
15.1 什么是注解?
15.2 什么可以被注解?
15.3 注解参数
15.4 注解实现
15.5 针对Java特性的注解
15.5.1 Java修饰符
15.5.2 标记接口
15.5.3 受检异常
15.5.4 变长参数
15.5.5 JavaBeans
15.6 用于优化的注解
15.6.1 尾递归
15.6.2 跳转表的生成和内联
15.6.3 可省略方法
15.6.4 基本类型的特殊化
15.7 用于错误和警告的注解
练习
16 XML处理 [A2]
16.1 XML字面量
16.2 XML节点
16.3 元素属性
16.4 内嵌表达式
16.5 在属性中使用表达式
16.6 特殊节点类型
16.7 类XPath表达式
16.8 模式匹配
16.9 修改元素和属性
16.10 XML变换
16.11 加载和保存
16.12 命名空间
练习
17 类型参数 [L2]
17.1 泛型类
17.2 泛型函数
17.3 类型变量界定
17.4 视图界定
17.5 上下文界定
17.6 Manifest上下文界定
17.7 多重界定
17.8 类型约束 [L3]
17.9 型变
17.10 协变和逆变点
17.11 对象不能泛型
17.12 类型通配符
练习
18 高级类型 [L2]
18.1 单例类型
18.2 类型投影
18.3 路径
18.4 类型别名
18.5 结构类型
18.6 复合类型
18.7 中置类型
18.8 存在类型
18.9 Scala类型系统
18.10 自身类型
18.11 依赖注入
18.12 抽象类型 [L3]
18.13 家族多态 [L3]
18.14 高等类型 [L3]
练习
19 解析 [A3]
19.1 文法
19.2 连结解析器操作
19.3 解析器结果变换
19.4 丢弃词法单元
19.5 生成解析树
19.6 避免左递归
19.7 更多的连结符
19.8 避免回溯
19.9 记忆式解析器
19.10 解析器说到底是什么?
19.11 正则解析器
19.12 基于词法单元的解析器
19.13 错误处理
练习
20 Actor [A3]
20.1 创建和启动actor
20.2 发送消息
20.3 接收消息
20.4 向其他actor发送消息
20.5 消息通道
20.6 同步消息和Future
20.7 共享线程
20.8 actor的生命周期
20.9 将多个actor链接在一起
20.10 actor的设计
练习
21 隐式转换和隐式参数 [L3]
21.1 隐式转换
21.2 利用隐式转换丰富现有类库的功能
21.3 引入隐式转换
21.4 隐式转换规则
21.5 隐式参数
21.6 利用隐式参数进行隐式转换
21.7 上下文界定
21.8 类型证明
21.9 @implicitNotFound注解
21.10 CanBuildFrom解读
练习
22 定界延续 [L3]
22.1 捕获并执行延续
22.2 “运算当中挖个洞”
22.3 reset和shift的控制流转
22.4 reset表达式的值
22.5 reset和shift表达式的类型
22.6 CPS注解
22.7 将递归访问转化为迭代
22.8 撤销控制反转
22.9 CPS变换
22.10 转换嵌套的控制上下文
练习
索引
《Web程序设计(第6版)》浓墨重彩地描述客户端和服务器端Web开发技术,深入分析Web站点构造和维护工具,并透彻讲解主流Web编程语言。
《做C4D Cinema 4D电商视觉设计教程》内容简介:本书共包含8章内容,从熟悉软件操作开始,使用一个个精美的案例进行全流程讲解,细
本书从“路”的观点出发,较为系统地论述了微波技术与天线的基本理论与基础知识。在编写时力求去繁就简,深入浅出,这样既保持了
《祛魅:天人感应、近代科学与晚清宇宙观念的嬗变》内容简介:在漫长的传统中国,国家礼制和日常生活中都不乏对天、天道以及无数人
妙笔生花-专业的Word商务文档制作与排版-(含光盘1张) 本书特色 学会word 不难,学好word 也不难!《妙笔生花——专业的word商务文档制作与排版(...
本书由英国著名的出版社LaurenceKing提供版权,中国青年出版社翻译出版。无论您是尚处于书籍设计学习阶段的初学者,还是有实际经
《职称英语考试历年真题详解及全真模拟试卷(理工类)》内容简介:人事部组织的全国统一标准的职称英语考试划分为综合、理工、卫生
《石头记脂本研究》内容简介:本书是冯其庸先生研究《石头记》脂砚斋批评本及其他《红楼梦》版本的文章结集。书中文章从版本文字异
《敏捷软件开发(珍藏版)》内容简介:本书作为敏捷软件开发的里程碑之作,重点介绍了敏捷软件开发的原则、模式和实践。全书共6部分
《人人都能学会的刷屏文案写作技巧》内容简介:“后来的我们,为了谁四处迁徙,为了谁回归故里?”真奇怪,这些字每一个都认识,每
《微信力量》内容简介:微信俨然已进化为一种万能的连接器,拥有连接一切的能力,彰显出强大的连接力,无处不在,无所不能。本书将
微信公众平台网页开发实战-HTML5+JSSDK混合开发解密 本书特色 2017年,微信已经全面支持公众平台内的网页开发,并且提供了网页开发样式库、JSSDK库...
书围绕着动态内存自动回收的话题,介绍了垃圾收集机制,详细分析了各种算法和相关技术。本书共12章。第1章首先介绍计算机存储器管
批处理在提高WINDOWS管理效率中的神奇应用 本书特色 本书作者结合多年的理论与实践知识,针对于系统管理员和网络管理员精心策划了这本书。本书将dos命令与批处...
《电信市场经营分析方法与案例》包括基础理论(1-3章)、分析实战(4-8章)和分析工具(9-11章)三大部分。第1章经营分析概述。界
数据库系统基础教程(英文版.第2版) 本书特色 本书是《Database Systems:The Complete Book》(《数据库系统全书》,由Hecto...
用Python编写程序,是相当容易的,所以这门语言非常流行。但若想掌握Python所特有的优势、魅力和表达能力,则相当困难,而且语言
《区域经济一体化中的法律问题研究》内容简介:本书主要研究了粤港澳大湾区经济一体化面临的具体法律问题,解析了粤港澳大湾区经济
《颜真卿颜家庙碑(上)——中华碑帖精粹》内容简介:《颜氏家庙碑》全称《唐故通议大夫行薛王友柱国赠秘书少监国子祭酒太子少保颜
《游学集录》内容简介:本书为2004年版《游学集录》的修订本,收为“孙昌武文集”的一种。书中所收录的36篇文章,除含孙昌武于20世