O'Reilly系列畅销丛书!广大学者读完后爱不释手!
《快学Scala》试图打破教条,从以下三个方面实现突围:
1)不马上跳到函数式编程;
2)努力搭建适用于Java/C++程序员的共同基础;
3)在引入新的概念之前,优先让用户理解可做类比的知识。
本书适合有一定的Java编程经验、对Scala感兴趣,并希望尽快掌握Scala核心概念和用法的开发者阅读。
《快学Scala》是一门以Java虚拟机(JVM)为目标运行环境并将面向对象和函数式编程语言的特性结合在一起的编程语言。你可以使用Scala编写出更加精简的程序,同时充分利用并发的威力。由于Scala运行于JVM之上,因此它可以访问任何Java类库并且与Java框架进行互操作。《快学Scala》从实用角度出发,给出了一份快速的、基于代码的入门指南。Horstmann以“博客文章大小”的篇幅介绍了Scala的概念,让你可以快速地掌握和应用。实际上手的操作,清晰定义的能力层次,从初级到专家级,全程指导。
Cay S.Horstmann,是《Java核心技术》卷1和卷2第8版(Sun Microsystems出版社2008年出版)的主要作者,除此之外,他还著有其他十多本面向专业程序员和计算机科学专业学生的书籍。
译者序
序
前言
作者简介
第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变长数组:数组缓冲
33遍历数组和数组缓冲
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简单类和无参方法
52带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类型检查和转换
84受保护字段和方法
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
第12章 高阶函数L1
第13章 集合A2
第14章 模式匹配和样例类A2
第15章 注解A2
第16章 XML处理A2
第17章 类型参数L2
第18章 高级类型L2
第19章 解析A3
第20章 ActorA3
第21章 隐式转换和隐式参数L3
第22章 定界延续L3
词汇表
索引
你也可以在命令行中使用这些名称:
scalac —Xelide—below INFO myprog.scala
如果不指定—Xelide—below标志,那些被注解的值低于1000的方法会被省略,剩下SEVERE的方法和断言,但会去掉所有警告。
说明:ALL和OFF级别可能会让人感到困惑。注解@elide(ALL)表示方法总是被省略,而@elide(OFF)表示方法永不被省略。但—Xelide—below OFF的意思是要省略
所有方法,而—Xelide—below ALL的意思是什么都不要省略。这就是后来又增加了MAXIMUM和MINIMUM的原因。
Predef模块块定义了一个可被忽略的assert方法。例如,我们可以写:
def makeMap (keys: Seq(String), values: Seq(String)) ={assert (keys.length==values.length, """"lengths don't match”)}
如果我们用不匹配的两个参数来调用该方法,则assert方法将抛出AssertionError,报错消息为“assertion failed: lengths don't match”。
如果要禁用断言,可以用—Xelide—below 2001或—Xelide—below MAXIMUM。注意在缺省情况下断言不会被禁用。相比Java断言,这是个受欢迎的改进。
注意:对被省略的方法调用,编译器会帮我们替换成Unit对象。如果你用到了 被省略方法的返回值,则一个ClassCastException会被抛出。最好只对那些没有返回值的方法使用@elidable注解。
……
Java和C++的进化速度已经大不如前,那些乐于使用更现代的语言特性的程序员们正在将眼光移向他处。Scala是个很有吸引力的选择;事实上,在我看来,对于想要突破和超越Java或C++的程序员而言,Scala是最具吸引力的一个。Scala的语法十分简洁,相比Java的样板代码,Scala让人耳目一新。Scala运行于Java虚拟机之上,让我们可以使用现成的海量类库和工具。它在拥抱函数式编程的同时,并没有废弃面向对象,使你得以逐步了解和学习一种全新的编程范式。Scala解释器可让你快速运行实验代码,这使得学习Scala的过程颇为轻松惬意。最后,同时也是很重要的一点是,Scala是静态类型的,编译器能够帮我们找出大部分错误,这样一来,这些错误就不至于要等到程序运行起来以后才被发现(或未被发现),造成时间上的浪费。
本书是写给那些对于立即开始Scala编程有急切渴望的读者的。我假定你懂Java、C#或C++,并且我也不会去解释变量、循环或类这些基本概念。我不去穷举Scala的所有特性,不会宣传某一种范式比另一种更优越,也不会用冗长的、过于机巧的示例来折磨你。与此相反,你将会以紧凑的篇幅得到你想要的信息,可以根据需要选择阅读和复习。
Scala是一门内容很丰富的语言,不过你并不需要知道它的所有细节,就已经可以有效地使用了。Scala的创始人MartinOdersky对应用程序开发工程师和类库设计人员所需的专业知识技能的层级进行了定义。
我希望你通过本书享受到学习Scala的乐趣。如果你发现了错误或者有任何改进建议。在那里,你也能找到指向包含本书全部代码示例的打包文件的链接。
在此特别感谢Dmitry Kirsanov和AlinaKirsanova将我的手稿从XHTML转换成如此漂亮的排版形式,让我可以将注意力集中在内容而不是在格式调整上。每个作者都应享受这种待遇!
参与本书审稿的人员有:Adrian Cumiskey、Mike Davis、Rob Dickens、Daniel
Sobral、Craig Tataryn、David Walend、WilliamWheeler。非常感谢你们的评价和建议!
最后,一如既往,感谢我的编辑Greg Doench,感谢他对我撰写本书的鼓励和贯穿于整个过程当中的洞察力。
拿到这本《快学Scala》的时候,我本来就没抱太大的期望,想着大概就是那种泛泛而谈,或者抄袭网上零散资料的“速成”读物。然而,当我真正静下心来阅读后,才发现自己错得离谱。这本书最大的亮点在于它的“结构化”和“循序渐进”。它没有把所有东西一股脑地扔给你,而是将Scala的学习过程分解成了一个个逻辑清晰、层层递进的模块。从最基础的语法,到对象、集合,再到函数式编程的核心理念,每一步都像是给你的大脑打下了一个坚实的地基,让你能够承载更复杂的知识。特别喜欢它处理并发和Actor模型的那部分,用一种非常易于理解的方式,将这些在其他语言中可能显得非常抽象的概念,变得触手可及。书中提供的一些代码片段,虽然不长,但都经过了精心设计,能够高效地展示某个特性。让我印象深刻的是,作者在讲解过程中,总会适时地穿插一些“为什么”和“这样做的好处”,而不是仅仅告诉你“怎么做”。这种深度的解释,对于理解Scala的设计哲学至关重要。
评分这本书我算是深度体验了一段时间了,原本对Scala了解不多,抱着“快速上手”的心态入手的。翻开第一页,就被作者那种直观、实用的讲解方式吸引住了。不像有些书上来就堆砌晦涩的概念,这本书更像是和一位经验丰富的开发者坐在一起,一边喝着咖啡,一边聊着Scala那些最核心、最常用的特性。举例都特别贴合实际开发场景,比如在讲函数式编程的时候,并没有空泛地解释“高阶函数”是什么,而是直接给出了一个如何在实际项目中简化复杂逻辑的例子,那个瞬间,我感觉“啊,原来Scala可以这么写!”,之前的很多疑惑一下子就解开了。而且,书中穿插的那些“小技巧”和“最佳实践”更是锦上添花,很多都是我之前在网上搜半天都找不到的宝藏信息。它没有试图把Scala的所有细节都讲透,但它精准地抓住了学习者最需要掌握的那部分,用最精炼的语言和最生动的例子呈现出来,确实做到了“快学”这个目标。感觉学完之后,至少能够信心满满地开始参与Scala项目了,不再是那个对着代码一脸茫茫然的新手。
评分作为一名有着多年Java经验的开发者,转向Scala一直是我的一个目标,但一直找不到合适的敲门砖。《快学Scala》这本书,可以说是完全击中了我的痛点。它并没有回避Scala与Java的差异,反而很巧妙地将两者进行了对比,让我能够更快地理解Scala的一些新概念是如何解决Java中一些固有的痛点,或者说提供了更优雅的解决方案。例如,在讲解Option类型时,它就清晰地阐述了为什么Option比Java的null检查更为安全和便捷,并且通过一系列的范例,让我看到了如何在实际代码中规避NPE(空指针异常)。书中对于模式匹配的讲解也尤为精彩,让我这个Java老司机第一次领略到了代码的“简洁之美”和“表达力”。此外,对于隐式转换和类型类这些相对高级的概念,书中也进行了相对浅显但又不失准确的介绍,为我后续深入学习打下了基础。这本书给我最大的感受是:它不是一本“从零开始”的Scala入门书,而是一本“从熟悉Java到精通Scala”的加速器。
评分坦白说,我之前也接触过几本关于Scala的书籍,但总觉得它们要么过于理论化,要么过于侧重某个特定领域,很难让我形成一个完整的知识体系。直到我读了《快学Scala》,才真正找到了“对味”的书。《快学Scala》的作者在知识点的选取上非常“老练”,他没有贪多求全,而是精准地抓住了Scala最核心、最常用,也是最能体现其优势的特性。例如,在介绍面向对象和函数式编程融合的部分,作者就非常有技巧地展示了Scala是如何将两者的优点结合得天衣无缝的,让我在理解和应用上都豁然开朗。而且,本书对于并发编程的讲解,更是令我印象深刻。作者用清晰的思路和实用的代码示例,将Actor模型等并发机制讲解得深入浅出,让我这个对并发一直有些畏惧的开发者,也敢于去尝试和应用了。这本书的价值在于,它在保证学习效率的同时,并没有牺牲知识的深度和广度,它像一把钥匙,为我打开了Scala世界的许多扇门。
评分我是一名初入编程领域的新人,选择《快学Scala》这本书,纯粹是因为它的名字听起来“友好”。没想到,这份“友好”贯穿了整本书。作者的语言风格非常平实,没有那些故弄玄虚的术语,读起来就像是在听一位耐心十足的老师讲解。即使是初学者可能觉得很难理解的“特质”(Traits)或者“高阶函数”,作者也都用非常生活化的比喻来解释,让我能够联想到一些我熟悉的事物,从而理解其背后的逻辑。书中提供的练习题虽然不至于非常复杂,但都是恰到好处地检验了我对前面知识点的掌握程度,而且每道题的解析都写得很详细,让我即使做错了,也能明白错在哪里,下次该怎么避免。让我特别感动的是,书中还提到了如何搭建Scala的开发环境,以及一些基本的调试技巧,这些对于一个刚起步的新手来说,简直太实用了。这本书让我相信,学习Scala并没有想象中那么困难,它是一条充满趣味的学习之路。
评分618不错,领券购物很划算,希望多搞活动。
评分好知识,写的很好,有价值。
评分网易 `{{newsapp://doc/DJKKBU0E04178D6R?s=CH_sps_article}}` !{{1528296789587}}! ${{sps_article}}$ ^{{6v0n4Iw3Auu2unEHCss2cCW58x/LDQkGOob++1LsScYl95hv6EINYRt6SmqKjET4}}^
评分可以可以可以可以可以,还好了
评分讲解scala语言的书很具体,文字印刷很好。
评分很好。。。。。。。。。。
评分这本书确实,很不错,搞大数据值得拥有,也非常适合初学者进行学习,一定要多动手
评分好书,讲的很实用,也很全面
评分学无止境 买来看看 希望get到更多的点
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有