Scala是一种针对 JVM 的通用的编程语言,用来以简明、优雅、类型安全的方式表示常见的编程模式。它无缝集成了面向对象语言和函数式语言的特性,可以大大提高JAVA程序员的编程效率。Twitter、SAP等知名企业已经开始在一些应用里使用Scala,很多新的程序员也开始学习它。
本书循序渐进地介绍了Scala的函数式编程基础,虽然篇幅短小,却切中要害。读者可以学会使用Scala静态语言的强大功能创建简洁、可扩展、高度可并行的代码。对于多核时代JVM上的并发编程,Scala是绝好的工具,而本书是你必不可少的向导。
第1章 简介 1
1.1 为何选择Scala 1
1.2 何为Scala 3
1.3 函数式编程 7
1.4 本书的内容 9
1.5 本书面向的读者 11
1.6 致谢 11
第2章 起步 13
2.1 下载Scala 13
2.2 安装Scala 13
2.2.1 在Windows上安装Scala 14
2.2.2 在类UNIX系统上安装Scala 14
2.3 让Scala跑起来 15
2.4 命令行上的Scala 16
2.5 把Scala代码当作脚本运行 17
2.5.1 在类UNIX系统上作为脚本运行 17
2.5.2 在Windows上作为脚本运行 18
2.6 在IDE里面运行Scala 18
2.7 编译Scala 19
第3章 Scala步入正轨 20
3.1 把Scala当作简洁的Java 20
3.2 Java基本类型对应的Scala类 23
3.3 元组与多重赋值 23
3.4 字符串与多行原始字符串 25
3.5 自适应的默认做法 26
3.6 运算符重载 27
3.7 Scala带给Java程序员的惊奇 29
3.7.1 赋值的结果 29
3.7.2 Scala的== 30
3.7.3 分号是半可选的 31
3.7.4 默认的访问修饰符 32
3.7.5 默认的访问修饰符以及如何修改 32
3.7.6 Scala的Protected 33
3.7.7 细粒度访问控制 34
3.7.8 避免显式return 35
第4章 Scala的类 37
4.1 创建类 37
4.2 定义字段、方法和构造函数 38
4.3 类继承 41
4.4 单例对象 42
4.5 独立对象和伴生对象 43
4.6 Scala中的static 44
第5章 自适应类型 46
5.1 容器和类型推演 47
5.2 Any类型 49
5.3 关于Nothing的更多情况 50
5.4 Option类型 50
5.5 方法返回类型推演 51
5.6 传递变参 52
5.7 参数化类型的可变性 53
第6章 函数值和闭包 57
6.1 从普通函数迈向高阶函数 57
6.2 函数值 58
6.3 具有多参数的函数值 59
6.4 Curry化 61
6.5 重用函数值 62
6.6 参数的位置记法 64
6.7 Execute Around Method模式 65
6.8 偏应用函数 67
6.9 闭包 68
第7章 Trait和类型转换 70
7.1 Trait 70
7.2 选择性混入 72
7.3 以trait进行装饰 74
7.4 Trait方法的延迟绑定 75
7.5 隐式类型转换 77
第8章 使用容器 81
8.1 常见的Scala容器 81
8.2 使用Set 82
8.3 使用Map 83
8.4 使用List 85
8.5 for表达式 90
第9章 模式匹配和正则表达式 93
9.1 匹配字面量和常量 93
9.2 匹配通配符 94
9.3 匹配元组和列表 94
9.4 类型和卫述句的匹配 96
9.5 case表达式里的模式变量和常量 96
9.6 对XML片段进行模式匹配 98
9.7 使用case类进行模式匹配 98
9.8 使用提取器进行匹配 100
9.9 正则表达式 103
9.10 把正则表达式当做提取器 104
第10章 并发编程 106
10.1 促进不变性 106
10.2 使用Actor的并发 107
10.3 消息传递 110
10.4 Actor类 113
10.5 actor方法 115
10.6 receive和receiveWithin方法 117
10.7 react和reactWithin方法 120
10.8 loop和loopWhile 124
10.9 控制线程执行 125
10.10 在各种接收方法中选择 127
第11章 与Java互操作 128
11.1 在Scala里使用Scala类 128
11.2 在Scala里使用Java类 130
11.3 在Java里使用Scala类 132
11.3.1 有普通函数和高阶函数的Scala类 132
11.3.2 同trait一起工作 134
11.3.3 单例对象和伴生对象 134
11.4 继承类 136
第12章 用Scala做单元测试 138
12.1 使用JUnit 138
12.2 使用ScalaTest 139
12.3 以Canary测试开始 140
12.4 使用Runner 140
12.5 Asserts 142
12.6 异常测试 144
12.7 在测试间共享代码 146
12.7.1 用BeforeAndAfter共享代码 146
12.7.2 用闭包共享代码 147
12.8 FunSuite的函数式风格 148
12.9 用JUnit运行ScalaTest 149
第13章 异常处理 152
13.1 异常处理 152
13.2 注意catch顺序 154
第14章 使用Scala 156
14.1 净资产应用实例 156
14.2 获取用户输入 156
14.3 读写文件 157
14.4 XML,作为一等公民 159
14.5 读写XML 161
14.6 从Web获取股票价格 164
14.7 让净资产应用并发 167
14.8 为净资产应用增加GUI 168
附录A Web资源 178
《实证法学研究(第一期)》内容简介:《实证法学研究》以实证法学研究方法为中心,通过实证研究来反思法学理论,并对法律实践进行
《从零开始学PHP》是关于PHP的入门教程。PHP作为一种被广泛应用的Web语言,由于其自身的优秀特性,已经有越来越多的网站采用PHP技
《看不見的聲音,聽不到的畫》創作的衝動通常是在遠離道理的地方發生為的是內心那張未完成的地圖記憶.日常.現在與未來活躍於日
《优势成长》内容简介:这是一本帮你锁定并提升个人核心竞争力的实用类的图书。活着的每一天,都是为了超越昨天的自己。给努力多一
《思想的浮冰》内容简介:拥有儒家价值的范导,并不能保证我们的生活无懈可击,但失去儒家价值的范导,却注定了我们的生活会一无是
《当书法穿越唐朝》内容简介:打开书法世界的钥匙,体验真实的唐朝。罗振宇、张泉灵、邓宝剑推荐阅读。玩转创意的书坛影帝唐太宗﹑
《荷塘月色:朱自清精读》内容简介:《荷塘月色:朱自清精读》是“壹本”系列之一,从当下读者爱读、想读和需要读的角度,精选著名
Createyourownrobots,toys,remotecontrollers,alarms,detectors,andmorewiththeArduin...
《分裂者宫崎骏》内容简介:分裂感在宫崎骏的身上几乎无处不在。他是著名的反战主义者,同时也是著名的武器爱好者。童年经历让他曾
《民法典与罗马法》内容简介:《民法典与罗马法》一书,分两大部分:第一部民法典,由“穿过新冠肺炎危机入典的《民法总则》”“我
在线阅读本书Howmuchmoneyareyoulosingbecauseofpoorlandingpagedesign?Inthiscomprehensive...
《程序化广告实战》内容简介:本书由浅至深,专注于剖析“程序化广告实战”业务,讲解了程序化广告的原理,并分析了产业上下游的发
谁读懂《未来》,谁就能赢得《未来》上海译文出版社独家中文版权诺贝尔和平奖得主、美国政商界巨擘、奥斯卡最佳纪录片奖得主、纽
《胜任力》内容简介:很多企业在对员工进行绩效考核时都会发现,明明员工的毕业院校、学历、专业都相同,笔试与面试成绩相差无几,
《直播启示录》内容简介:2020年年初,疫情之下的中国经济疲敝,百业待兴。电商直播因重新定义“人、货、场”的模型结构,以突破1万
《客户关系管理》内容简介:王广宇所著的《客户关系管理(第3版)》是客户关系管理(CustomerRelationshipManagement,CRM)研究领
《历史的六个面孔》内容简介:本书介绍了春秋时的管仲、战国时的商鞅、西汉时的桑弘羊、唐代的刘晏、宋代的王安石、明代的张居正这
本书全面深入地剖析了面向对象的PHP编程与设计。首先介绍了PHP的OO特性,包括类声明、对象实例化、继承、方法与属性封装以及静态
C游戏编程从入门到精通-(第2版)(配1张光盘) 目录 第1章文本格式游戏1.1文本模式游戏制作1.1.1文本窗口函数1.1.2INT10中断功能1.2猜数字游...
《StrutsHibernateSpring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,...