下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922
读书 > 编程语言 >Java > Scala编程思想(原书第2版)

Scala编程思想(原书第2版)

综合评级:★★★★★

定价:69.00

作者:[美]布鲁斯·埃克尔 著

出版社:机械工业出版社

出版日期:2015年11月

页数:305

字数:210000

ISBN:9787111517405

书籍介绍
本书介绍Scala的基础特性,采用短小精悍的“原子”解构Scala语言的元素和方法。一个“原子”即为一个小型知识点,通过代码示例引导读者逐步领悟Scala的要义,结合练习鼓励读者在实践中读懂并写出地道的Scala代码。访问www.AtomicScala.com可下载练习解答和代码示例,还可了解本书英文版的实时动态。本书无需编程背景知识,适合Scala初学者阅读。同时,本书也为有经验的程序员提供了“快车道”,共同探索编程语言未来的模样。
相关课程
目录

出版者的话

译者序

前言

编辑器

shell

安装(Windows

安装(Mac)

安装(Linux

运行Scala

注释

编写脚本

数据类型

变量

表达式

条件表达式

计算顺序

组合表达式

总结1

方法

类和对象

ScalaDoc

创建类

类中的方法

导入和包

测试

for循环

Vector

更多的条件表达式

总结2

模式匹配

类参数

具名参数和缺省参数

重载

构造器

辅助构造器

类的练习

case类

字符串插值

参数化类型

作为对象的函数

map和reduce

推导

基于类型的模式匹配

基于case类的模式匹配

简洁性

风格拾遗

地道的Scala

定义操作符

自动字符串转换

元组

伴随对象

继承

基类初始化

覆盖方法

枚举

抽象类

特征

统一访问方式和setter

衔接java

应用

浅尝反射

多态

组合

使用特征

标记特征和case对象

类型参数限制

使用特征构建系统

序列

列表和递归

将序列与zip相结合

映射表

引用和可修改性

使用元组的模式匹配

用异常进行错误处理

构造器和异常

用Either进行错误报告

用Option对“非任何值”

进行处理

用Try来转换异常

定制错误报告机制

按契约设计

记日志

扩展方法

使用类型类的可扩展系统

接下来如何深入学习

附录A AtomicTest

附录B 从Java中调用

Scala

索引

前言
前言

  这应该是你的**本有关Scala的书,而不是*后一本。我们呈现的内容将足以使你熟知这门语言并感到得心应手—你将掌握这门语言,但还不足以成为专家。通过阅读本书,你将编写出有用的Scala代码,但是不必追求读懂碰到的所有Scala代码。

  读完本书后,你就可以阅读更加复杂的Scala书籍了,在本书的末尾我们推荐了几本。

  这是一本为新手准备的专用书籍。之所以称为“新手”,是因为本书并不要求你之前具备编程知识,而“专用”是因为书中包含丰富的内容,足够自学成才。我们给出了有关编程和Scala的基础知识,但是并没有用这门语言博大精深的完整知识体系来淹没你。

  属于初学者的程序员应该将其看作一个游戏:你可以通关,但是需要一路解决多个难题。有经验的程序员能够快速阅读本书,并且发现需要慢下来留心阅读的地方。

  原子概念

  所有编程语言都是由各种特性构成的,运用这些特性可以产生运行结果。Scala非常强大:它不仅有更多特性,而且可以通过大量不同的方式来表示这些特性。如果我们将这些特性和表示方式一股脑地抛给你,你肯定会觉得Scala“过于复杂”,从而放弃学习。

  然而不必如此。

  如果了解这些特性,那么你就可以阅读任何Scala代码,并且梳理出其中的含义。事实上,对于一整页的Scala代码,如果用其他语言编写具有相同效果的代码则需要许多页,因而理解Scala代码显得更容易,因为只需“一页”就可以看到所有代码。

  为了避免揠苗助长,我们会遵循下面的原则循循善诱地教授这门语言:

  1. 积跬步以至千里。我们抛弃了将每一章都编写成长篇大论的做法,取得代之的是将每一小步都表示成“原子性”概念,或者简称“原子”,它们看起来就像微缩的章。典型的原子包括一个或多个可运行的小型代码段以及它们产生的输出。我们将描述哪些特性是Scala的创新和独到之处,并且努力做到每个原子只表示一个新概念。

  2. 无任何前向引用。对作者而言,这种描述方式很有用:“这些特性将在后续章节中进行阐述。”这会使读者发懵,所以我们不会这么做。

  3. 无任何对其他语言的引用。我们几乎从来不引用其他语言(只在**必要时才引用)。我们不知道你已经掌握了哪些语言(如果有的话),如果我们用某种你不理解的语言的某个特性来进行类比,那么肯定会挫伤你的积极性。

  4. 事实胜于雄辩。与纯粹用文字来描述特性不同的是,我们更喜欢用示例和输出来说明特性。通过阅读代码来了解特性显然更好。

  5. 实践出真知。我们设法首先展示语言的机制,然后再解释为什么会有这些特性。这种做法似乎落后于“传统”教学方式,但往往更有效。

  我们努力工作以期创造*好的学习体验,但是仍然要提醒你:为了易于理解,我们偶尔会过度简化或抽象某个概念,而你之后可能会发现这个概念不完全正确。我们并非经常这么做,凡是这么做都是经过深思熟虑的。我们相信这样做有助于使现在的学习更轻松,并且一旦你了解了详情,就会适应这种方式。

  交叉引用

  当我们引用本书中的另一个原子时,会为该原子加上底纹,例如,欢迎阅读原子类和对象。

  如何使用本书

  本书的读者对象既包括编程初学者,也包括已经学会使用其他语言编程的程序员。

  初学者。从前言开始,像读其他书一样顺序阅读每个原子,包括“总结”原子,总结内容有助于巩固所学知识。

  有经验的程序员。因为你已经理解了编程的基础知识,所以我们为你准备了“快车道”:

  1. 阅读前言。

  2. 按照相应原子中介绍的方式在你的平台上安装必要的软件。我们假设你已经安装过某种程序编辑器,并且会使用shell,否则,请阅读编辑器和shell。

  3. 阅读运行Scala和编写脚本。

  4. 跳到总结 1,阅读其内容并解答其中的练习。

  5. 跳到总结 2,阅读其内容并解答其中的练习。

  6. 至此,从模式匹配开始,继续按照正常方式通读本书。

  第2版中的修订

  第2版中的修订大多是源于bug报告的小修改和订正,以及针对Scala 2.11版本而做的必要更新。另外还对相当数量的拖沓冗长的行文进行了精简。如果你买过第1版的电子书,那么将会自动获得第2版的更新。如果你买过第1版的纸质书,那么可以在AtomicScala.com网站上找到第2版中的所有修订。

  本书样章

  为了更好地介绍本书并引领你进入Scala的世界,我们发布了免费的电子版样章,你可以在AtomicScala.com上找到。我们尽力让样章足够长,使得它自身就非常有用。

  无论是纸质版还是电子版,本书完整版都是需要付费的。如果你喜欢免费样章中所呈现的内容,那么请支持我们,通过付费帮助我们继续完成更多工作。我们希望本书对你有所帮助,并且非常感激你的资助。

  在互联网时代,控制任何信息看似都是绝无可能的。你也许能够在许多地方找到本书的完整电子版,如果你此刻无力支付,因而从某个网站上下载了它,那么就请你“将知识传播出去”。例如,在你学会Scala之后帮助他人学习Scala,或者只是以急他人所急的方式帮助他们。也许在未来的某天,风光起来的你会乐于慷慨解囊。

  示例代码和练习解答

  这些都可以在AtomicScala.com下载。

  咨询

  Bruce Eckel认为咨询要想上境界,其基础是理解团队或组织的特定需求和能力,并基于这种理解发现能够以**方式将你扶上马走一程的工具和技术。这包括在多个领域内的指导和协助:帮助你分析计划,评估能力和风险,辅助设计,工具评估和选择,语言培训,项目引导研讨会,开发过程中的指导性访问,指导性的代码走查,以及特定主题的研究和现场培训。要想了解Bruce是否能够为你的需求提供合适的咨询服务,请通过MindviewInc@gmail.com联系他。

  会议

  Bruce组织了一个空间开放的会议Java Posse Roundup(现已成为一个冬季技术论坛,www.WinterTechForum.com),以及另一个针对Scala的同样秉承空间开放原则的会议Scala Summit(www.ScalaSummit.com)。Dianne组织了Ann Arbor Scala Enthusiasts group,同时她还是CodeMash的组织者之一。加入AtomicScala.com邮件列表,就会收到我们的活动和演讲通知。

  支持我们

  撰写本书及其各类辅助材料可是一个大项目,这花费了我们大量的时间和精力。如果你喜欢本书,并且想看到更多类似的精品,那么就请支持我们吧:

  写博客或发tweet等,并转发给你的好友。这是一种草根式的拓展市场行为,因此你所做的任何事都会有助于本书的推广。

  在AtomicScala.com购买本书的电子版或纸质版。

  在AtomicScala.com浏览其他辅助产品或App。

  关于我们

  Bruce Eckel是获得多项大奖的《Thinking in Java》和《Thinking in C++》的作者,他还创作过大量有关计算机编程的其他书籍。他在计算机产业界已经耕耘了30余载,不断地经历着这样的循环:感到挫败,尝试退出,然后诸如Scala这样的新生事物产生,带来新的希望,又将他拉回老本行。他在世界各地做了成百上千场报告,并且乐于参加像冬季技术论坛和Scala Summit之类的各种会议和活动。Bruce住在科罗拉多州的Crested Butte,他经常在当地社区剧院中表演。尽管他此生可能*多也就是个中级滑雪健将或山地车手,但是他认为这些活动和画抽象画一样,都是人生中不可或缺的部分。Bruce拥有应用物理专业的学士学位以及计算机工程专业的硕士学位。他目前正在学习组织动力学,以期找到组织公司的新方式,使一起工作变成一种乐趣。你可以在www.reinventing-business.com上阅读他在组织方面的奋斗事迹,而他在编程方面的工作可以在www.mindviewinc.com上找到。

  Dianne Marsh是Netflix云工具工程部门(Engineering for Cloud Tools)的主管。她是SRT Solutions的创始人之一,这是一家客户软件开发公司,在2013年被出售之前,公司一直由她负责运营。她的专长是编程和技术,包括制造、基因组学决策支持和实时处理应用系统。Dianne在职业生涯伊始使用的是C,后来喜欢的语言包括C++、Java和C#,目前她非常喜欢Scala。Dianne协助组织了CodeMash (www.codemash.org),这是一个全部由志愿者构成的开发者大会,使用各种语言的开发者齐聚一堂并彼此学习。她还是Ann Arbor Hands-On Museum的董事会成员。她积极参加本地用户组,并且主持着其中的好几个。她在密歇根技术大学(Michigan Technological University)获得计算机科学硕士学位。Dianne嫁给了她*好的朋友,养育了两个可爱的孩子。就是她说服了Bruce撰写本书。

  致谢

  我们感谢Programming Summer Camp 2011的参与者对本书的早期评论和参与,特别感谢Steve Harley、Alf Kristian Stoyle、 Andrew Harmel-Law、 Al Gorup、 Joel Neely和James Ward,他们都慷慨地奉献了自己的时间和评论。还要感谢许多对本书Google Docs格式进行评阅的人。

  Bruce要感谢Josh Suereth为本书提供的所有技术帮助。还要感谢Crested Butte的Rumors Coffee and Tea House和Townie Books,他在撰写本书时在这两家店里花了不少时间。还有Bliss Chiropractic的Mimi和Jay,在写作过程中,他们总是定期帮他把事情都理顺。

  Dianne要感谢她在SRT的业务搭档Bill Wagner,以及SRT Solutions的雇员,因为她占用了他们工作之外的时间。她还要感谢Bruce,因为他同意与她一起撰写本书,并在此过程中一直对她不离不弃,尽管他肯定已经因她所犯的被动语态和标点符号错误而身心俱疲。她还要特别感谢丈夫Tom Sosnowski,感谢他在写作过程中给予的宽容和鼓励。

  *后,感谢Bill Venners和Dick Wall,他们的“通向Scala的天梯”(Stairway to Scala)课程帮助我们巩固了对这门语言的理解。

  题献

  献给Julianna和Benjamin Sosnowski。你们无与伦比。

  版权

  本书所有版权归其各自持有者所有。

热门图书
推荐新闻
技术文库
论坛推荐