具体描述
Scala是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的最佳特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala运行于JVM之上,因此它可以访问任何Java类库并且与Java框架进行互操作。本书从实用角度出发,给出了一份快速的、基于代码的入门指南。Horstmann以“博客文章大小”的篇幅介绍了Scala的概念,让你可以快速地掌握和应用。实际上手的操作,清晰定义的能力层次,从初级到专家级,全程指导。
本书适合有一定的Java编程经验、对Scala感兴趣,并希望尽快掌握Scala核心概念和用法的开发者阅读。
作者简介
Cay S. Horstmann是《Java核心技术》卷1和卷2第8版(Sun Microsystems Press出版社2008年出版)的主要作者,除此之外还著有其他十多本面向专业程序员和计算机科学专业学生的书籍。他是San Jose州立大学计算机科学专业的教授,同时是一位Java Champion。
目录信息
序
前言
关于作者
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 转换嵌套的控制上下文
练习
索引
· · · · · · (收起)
读后感
有许许多多专业名词有强制翻译且不给出原文的现象,是么特质,样例类之类的,读起来费劲。 书本身的很多介绍方式也让人觉得有点理解困难。 但所用的Scala版本还算比较新,因而实验起来还算方便。 继续看好这一JVM上的Functional Programming Language,后续应该还是要继续找介...
千万不要买。 你知道什么是特质么?知道什么是样本类么?知道什么叫存在类型么?知道什么叫定界延续么?本书最大的特点是所有不常见的英文单词或叫法都给了个中文翻译,这还不算啥,关键是都没给出所对应的英文原文,所以,你会带着对各种名词的疑问阅读完本书,然后仍一无所...
这本书看完花的时间并不多,三天左右把。主要是工作的时候要用,有时候忘记了某个知识点也可以翻起来看看。对于入门来说这本书是足够了,但是当你需要一些高级特性时,却找不到过多的描述。 可能这本书的定位就在于“快学”,略去大多复杂的高级特性,只保留比较基础的实践...
大致讲了一下语法,没讲什么原理性的东西,对初学者不好懂,需要多看几遍,不是我理想的书 大致讲了一下语法,没讲什么原理性的东西,对初学者不好懂,需要多看几遍,不是我理想的书 大致讲了一下语法,没讲什么原理性的东西,对初学者不好懂,需要多看几遍,不是我理想的书
千万不要买。 你知道什么是特质么?知道什么是样本类么?知道什么叫存在类型么?知道什么叫定界延续么?本书最大的特点是所有不常见的英文单词或叫法都给了个中文翻译,这还不算啥,关键是都没给出所对应的英文原文,所以,你会带着对各种名词的疑问阅读完本书,然后仍一无所...
用户评价
我之所以会选择《快学Scala》,很大程度上是因为它在社区中的口碑。我之前在一些技术论坛上看到有人推荐这本书,都说它的讲解非常到位,而且能够帮助开发者快速上手。拿到书之后,我发现这些评价果然不虚。书中对Scala的并发模型,比如Actor模型,都有非常详尽的介绍,这对于我目前工作中使用到的并发场景非常有指导意义。而且,它还涉及到了Scala在大数据领域的应用,比如与Spark的结合,这更是让我眼前一亮。这本书不仅仅是停留在语言本身的介绍,而是将Scala的应用场景也做了很好的铺垫,让我看到了学习Scala的实际价值。我感觉这本书就像是一张通往Scala世界的地图,它清晰地指引着我如何探索这个强大的生态系统。我非常期待通过这本书,能够提升我的编程技能,并且能够胜任更多具有挑战性的项目。
对于我这种希望能够高效学习新技术的人来说,《快学Scala》简直是及时雨。我之前尝试过学习一些新的编程语言,但往往因为资料不够系统或者讲解不够到位,导致学习过程缓慢且充满挫败感。而这本书的“快学”二字,确实名副其实。它在保持知识严谨性的同时,极大地优化了学习流程。每一章节都承接上一章节的内容,逻辑非常连贯,不会出现跳跃式的讲解。而且,书中还提供了一些实用的技巧和最佳实践,这些都是在日常开发中非常宝贵的经验。我注意到,它在讲解一些稍微复杂的主题时,会先给出简化的例子,然后再逐步增加复杂性,这样可以让读者循序渐进地掌握。这对于我来说,最大的好处就是能够快速建立起对Scala的整体认知,并且能够迅速开始编写一些简单的程序。感觉这本书的作者非常有经验,知道如何才能让学习者最高效地吸收知识。
这本书的排版和设计也让我非常喜欢。字体大小适中,行间距舒适,代码块的区分也很清晰,这大大提升了阅读体验。我经常会对着书上的代码进行实际的敲打和运行,而书中代码的清晰度,让我在复制粘贴时不容易出错,也方便了我对代码逻辑的理解。另外,我注意到书中对一些容易混淆的概念,比如值类型和引用类型,或者是在面向对象和函数式编程之间的切换,都有非常细致的对比和解释,这对于我避免踩坑非常有帮助。我发现,它不仅仅是一本技术手册,更像是一位循循善诱的良师益友。它鼓励读者去实践,去思考,去探索。我感觉作者在编写这本书时,充分考虑到了读者的学习曲线,并且尽力去降低学习的门槛。这本书的装帧也很不错,拿在手里很有质感,翻阅起来也很顺手,这些细节之处都体现了出版方的用心。
不得不说,这本书在知识的深度和广度上都做得相当不错。它不仅仅是简单地罗列语法,而是深入浅出地解释了Scala背后的设计理念,以及为什么它能够如此高效地处理并发和构建大型系统。书中对函数式编程思想的讲解尤其让我印象深刻,这是一种与我之前接触的命令式编程截然不同的思维方式,但《快学Scala》通过生动的比喻和大量的代码示例,让我逐渐理解了函数式编程的优雅和强大之处。我之前对一些函数式编程的概念感到很困惑,比如高阶函数、不可变性等等,但通过这本书的解读,我仿佛打开了新世界的大门。它不仅仅是教你“怎么做”,更告诉你“为什么这么做”,这种深度的讲解让我感觉收获颇丰。我还发现书中对Scala的特质,比如模式匹配、隐式转换等方面,都有非常详尽的介绍,这些都是Scala独有的强大功能,这本书让我看到了它们在实际开发中的应用潜力。
一本好书,真的能改变一个人对编程的看法!我最近入手了《快学Scala》,虽然还没来得及深入研读,但光是翻看目录和前几章,我就被深深吸引了。这本书的编排方式非常清晰,像是为零基础或者想快速入门的开发者量身定制的。它没有一开始就堆砌复杂的概念,而是从最基础的“Hello, World!”开始,一步步引导读者熟悉Scala的语法和特性。我尤其喜欢它在讲解每一个新概念时,都会配上贴合实际的例子,这让我能够立刻理解抽象的理论是如何落地的。而且,它讲解的语言非常平实易懂,没有那种让人望而却步的学术术语,这对于我这样刚刚接触Scala的菜鸟来说,简直是福音。我感觉这本书就像一个经验丰富的导师,耐心地手把手教我,让我不至于迷失在学习的道路上。这本书的厚度适中,不会让人觉得压力太大,但又足够充实,能够涵盖Scala的核心知识点。我迫不及待地想继续深入学习,相信这本书一定能带我快速掌握Scala这门强大的语言。
高度实用主义的语言,熟悉Java的人学得很快
讲解很清楚,趣味性差一点
scala在一个庞大复杂编译器的基础上做了很多工程上的优化,会让java开发者爱不释手。同样是jvm上的语言,但对于喜爱简洁实用,偏爱偏函数式表达的coder,可能会更喜爱clojure。等掌握了函数式编程的概念和理解scala的类型系统,可能才会有拨云见日的感觉。 《快学scala》全面细致,可做java开发者的scala入门书,但不见得很轻松掌握。
2014年9月11日购于亚马逊
// For summoning implicit values from the nether world // 用于从冥界召唤隐式值