给大家带来的一篇关于Scala相关的电子书资源,介绍了关于Scala、Scala入门方面的内容,本书是由电子工业出版社出版,格式为PDF,资源大小15.2 MB,(美)Cay S. Horstmann编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:7.1。
内容介绍
Scala相拥函数式编程设计风格,又沒有抛下面向对象编程的程序编写现代性,能够 编写出比Java更精减的程序流程。因为运作在JVM之中,可浏览一切Java类库,能跟Java架构互操作,也更非常容易地充分发挥并发编程的杀伤力。
《快学Scala(第2版)》详细介绍Scala这些能给你迅速入门干活的关键定义和方法,却并不尝试穷举法全部語言特性,也不会用冗杂、过度机巧的实例来,只是细心掂量事例和训练,依照清楚界定的能力等级引导你变成权威专家。
*迅速了解Scala编译器、英语的语法、专用工具和特有的应用习惯性
*把握关键語言特性:涵数、数组、投射、元组、包、导入、异常处理等
*了解Scala面向对象思想:类、承继和个性特征
*应用Scala解决现实世界的程序编写每日任务:实际操作文档、正则表达式和XML
*应用高阶函数和功能齐全的Scala结合类库
*利用Scala强劲的模式匹配和示例类
*利用Scala的future搭建并发程序
*完成行业特殊語言
*了解Scala种类系统软件
*运用高級的“超强力专用工具”,如注释、隐式变换和隐式主要参数、种类类等
Scala是一门关键以Javavm虚拟机(JVM)为总体目标软件环境并将面向对象编程和函数式编程語言的*特性融合在一起的计算机语言。你能应用Scala编写出更为精减的程序流程,另外充足利用高并发的杀伤力。因为Scala默认设置运作于JVM之中,因而它能够 浏览一切Java类库而且与Java架构开展互操作。根据ScalaJS新项目,Scala还能够被编写出JavaScript编码,我们一起更方便快捷高效率地开发设计Web运用。这书从好用视角考虑,得出了一份迅速的、根据编码的新手入门手册。Horstmann以“网络文章尺寸”的篇数详细介绍了Scala的定义,让你能迅速地把握和运用。事实上手的实际操作,清楚界定的能力层级,从初中级到大师级,全线具体指导。合适有一定的Java程序编写工作经验、对Scala很感兴趣,并期待尽早把握Scala关键定义和使用方法的开发人员阅读文章。
目录
-
译者序 V
-
第1版序 XVII
-
前言 XIX
-
作者简介 XXIII
-
第1章 基础 A1 1
-
1.1 Scala解释器 1
-
1.2 声明值和变量 4
-
1.3 常用类型 5
-
1.4 算术和操作符重载 7
-
1.5 关于方法调用 8
-
1.6 apply方法 9
-
1.7 Scaladoc 11
-
练习 16
-
第2章 控制结构和函数 A1 19
-
2.1 条件表达式 20
-
2.2 语句终止 22
-
2.3 块表达式和赋值 22
-
2.4 输入和输出 23
-
2.5 循环 25
-
2.6 高级for循环 27
-
2.7 函数 28
-
2.8 默认参数和带名参数 L1 29
-
2.9 变长参数 L1 29
-
2.10 过程 31
-
2.11 懒值 L1 31
-
2.12 异常 32
-
练习 35
-
第3章 数组相关操作 A1 39
-
3.1 定长数组 39
-
3.2 变长数组:数组缓冲 40
-
3.3 遍历数组和数组缓冲 41
-
3.4 数组转换 42
-
3.5 常用算法 44
-
3.6 解读Scaladoc 45
-
3.7 多维数组 47
-
3.8 与Java的互操作 48
-
练习 49
-
第4章 映射和元组 A1 53
-
4.1 构造映射 53
-
4.2 获取映射中的值 54
-
4.3 更新映射中的值 55
-
4.4 迭代映射 56
-
4.5 已排序映射 57
-
4.6 与Java的互操作 57
-
4.7 元组 58
-
4.8 拉链操作 59
-
练习 60
-
第5章 类 A1 63
-
5.1 简单类和无参方法 63
-
5.2 带getter和setter的属性 64
-
5.3 只带getter的属性 67
-
5.4 对象私有字段 68
-
5.5 Bean属性 L1 69
-
5.6 辅助构造器 71
-
5.7 主构造器 72
-
5.8 嵌套类 L175
-
练习 78
-
第6章 对象 A1 81
-
6.1 单例对象 81
-
6.2 伴生对象 82
-
6.3 扩展类或特质的对象 83
-
6.4 apply方法 84
-
6.5 应用程序对象 85
-
6.6 枚举 86
-
练习 87
-
第7章 包和引入 A1 91
-
7.1 包 91
-
7.2 作用域规则 93
-
7.3 串联式包语句 95
-
7.4 文件顶部标记法 95
-
7.5 包对象 96
-
7.6 包可见性 97
-
7.7 引入 97
-
7.8 任何地方都可以声明引入 98
-
7.9 重命名和隐藏方法 99
-
7.10 隐式引入 99
-
练习 100
-
第8章 继承 A1 103
-
8.1 扩展类 103
-
8.2 重写方法 104
-
8.3 类型检查和转换 105
-
8.4 受保护字段和方法 106
-
8.5 超类的构造 106
-
8.6 重写字段 107
-
8.7 匿名子类 109
-
8.8 抽象类 109
-
8.9 抽象字段 110
-
8.10 构造顺序和提前定义 L3 110
-
8.11 Scala类继承关系 112
-
8.12 对象相等性 L1 114
-
8.13 值类 L2 116
-
练习 117
-
第9章 文件和正则表达式 A1 121
-
9.1 读取行 121
-
9.2 读取字符 122
-
9.3 读取词法单元和数字 123
-
9.4 从URL或其他源读取 124
-
9.5 读取二进制文件 124
-
9.6 写入文本文件 124
-
9.7 访问目录 125
-
9.8 序列化 125
-
9.9 进程控制 A2126
-
9.10 正则表达式 129
-
9.11 正则表达式组 130
-
练习 131
-
第10章 特质 A1135
-
10.1 为什么没有多重继承 135
-
10.2 当作接口使用的特质 137
-
10.3 带有具体实现的特质 138
-
10.4 带有特质的对象 139
-
10.5 叠加在一起的特质 140
-
10.6 在特质中重写抽象方法 141
-
10.7 当作富接口使用的特质 142
-
10.8 特质中的具体字段 143
-
10.9 特质中的抽象字段 144
-
10.10 特质构造顺序 145
-
10.11 初始化特质中的字段 147
-
10.12 扩展类的特质 148
-
10.13 自身类型 L2 149
-
10.14 背后发生了什么 151
-
练习 152
-
第11章 操作符 A1157
-
11.1 标识符 157
-
11.2 中置操作符 158
-
11.3 一元操作符 159
-
11.4 赋值操作符 160
-
11.5 优先级 161
-
11.6 结合性 162
-
11.7 apply和update方法 162
-
11.8 提取器 L2 164
-
11.9 带单个参数或无参数的提取器 L2166
-
11.10 unapplySeq方法 L2167
-
11.11 动态调用 L2 167
-
练习 171
-
第12章 高阶函数 L1 175
-
12.1 作为值的函数 175
-
12.2 匿名函数 177
-
12.3 带函数参数的函数 178
-
12.4 参数(类型)推断 179
-
12.5 一些有用的高阶函数 180
-
12.6 闭包 181
-
12.7 SAM转换 182
-
12.8 柯里化 183
-
12.9 控制抽象 185
-
12.10 return表达式 186
-
练习 187
-
第13章 集合 A2191
-
13.1 主要的集合特质 192
-
13.2 可变和不可变集合 193
-
13.3 序列 195
-
13.4 列表 196
-
13.5 集 197
-
13.6 用于添加或去除元素的操作符 198
-
13.7 常用方法 201
-
13.8 将函数映射到集合 203
-
13.9 化简、折叠和扫描 A3 205
-
13.10 拉链操作 209
-
13.11 迭代器 210
-
13.12 流 A3 211
-
13.13 懒视图 A3 213
-
13.14 与Java集合的互操作 213
-
13.15 并行集合 215
-
练习 217
-
第14章 模式匹配和样例类 A2 221
-
14.1 更好的switch 222
-
14.2 守卫 223
-
14.3 模式中的变量 223
-
14.4 类型模式 224
-
14.5 匹配数组、列表和元组 225
-
14.6 提取器 227
-
14.7 变量声明中的模式 227
-
14.8 for表达式中的模式 229
-
14.9 样例类 229
-
14.10 copy方法和带名参数 230
-
14.11 case语句中的中置表示法 231
-
14.12 匹配嵌套结构 232
-
14.13 样例类是邪恶的吗 233
-
14.14 密封类 234
-
14.15 模拟枚举 235
-
14.16 Option类型 235
-
14.17 偏函数 L2 236
-
练习 238
-
第15章 注解 A2243
-
15.1 什么是注解 243
-
15.2 什么可以被注解 244
-
15.3 注解参数 245
-
15.4 注解实现 246
-
15.5 针对Java特性的注解 247
-
15.5.1 Java修饰符 247
-
15.5.2 标记接口 248
-
15.5.3 受检异常 249
-
15.5.4 变长参数 249
-
15.5.5 JavaBeans 250
-
15.6 用于优化的注解 250
-
15.6.1 尾递归 .250
-
15.6.2 跳转表生成与内联 252
-
15.6.3 可省略方法 253
-
15.6.4 基本类型的特殊化 254
-
15.7 用于错误和警告的注解 255
-
练习 256
-
第16章 XML处理 A2 259
-
16.1 XML字面量 260
-
16.2 XML节点 260
-
16.3 元素属性 262
-
16.4 内嵌表达式 263
-
16.5 在属性中使用表达式 264
-
16.6 特殊节点类型 265
-
16.7 类XPath表达式 266
-
16.8 模式匹配 267
-
16.9 修改元素和属性 268
-
16.10 XML变换 269
-
16.11 加载和保存 270
-
16.12 命名空间 273
-
练习 275
-
第17章 Future A2 277
-
17.1 在future中运行任务 278
-
17.2 等待结果 280
-
17.3 Try类 281
-
17.4 回调 282
-
17.5 组合future任务 283
-
17.6 其他future变换 286
-
17.7 Future对象中的方法 288
-
17.8 Promise 289
-
17.9 执行上下文 291
-
练习 292
-
第18章 类型参数 L2 297
-
18.1 泛型类 298
-
18.2 泛型函数 298
-
18.3 类型变量界定 298
-
18.4 视图界定 300
-
18.5 上下文界定 301
-
18.6 ClassTag上下文界定 301
-
18.7 多重界定 302
-
18.8 类型约束 L3302
-
18.9 型变 304
-
18.10 协变和逆变点 305
-
18.11 对象不能泛型 307
-
18.12 类型通配符 308
-
练习 309
-
第19章 高级类型 L2 313
-
19.1 单例类型 313
-
19.2 类型投影 315
-
19.3 路径 316
-
19.4 类型别名 317
-
19.5 结构类型 318
-
19.6 复合类型 319
-
19.7 中置类型 320
-
19.8 存在类型 321
-
19.9 Scala类型系统 322
-
19.10 自身类型 323
-
19.11 依赖注入 325
-
19.12 抽象类型 L3 327
-
19.13 家族多态 L3 329
-
19.14 高等类型 L3 333
-
练习 336
-
第20章 解析 A3 341
-
20.1 文法 342
-
20.2 组合解析器操作 343
-
20.3 解析器结果变换 345
-
20.4 丢弃词法单元 347
-
20.5 生成解析树 348
-
20.6 避免左递归 348
-
20.7 更多的组合子 350
-
20.8 避免回溯 352
-
20.9 记忆式解析器 353
-
20.10 解析器说到底是什么 354
-
20.11 正则解析器 355
-
20.12 基于词法单元的解析器 356
-
20.13 错误处理 358
-
练习 359
-
第21章 隐式转换和隐式参数 L3. 363
-
21.1 隐式转换 363
-
21.2 利用隐式转换丰富现有类库的功能 364
-
21.3 引入隐式转换 365
-
21.4 隐式转换规则 367
-
21.5 隐式参数 368
-
21.6 利用隐式参数进行隐式转换 370
-
21.7 上下文界定 371
-
21.8 类型类 372
-
21.9 类型证明 374
-
21.10 @implicitNotFound注解 376
-
21.11 CanBuildFrom解读 376
-
练习 379
-
词汇表 381
学习笔记
Scala入门之List使用详解
Scala中使用List Scala是函数式风格与面向对象共存的编程语言,方法不应该有副作用是函数风格编程的一个重要的理念。方法唯一的效果应该是计算并返回值,用这种方式工作的好处就是方法之间很少纠缠在一起,因此就更加可靠和可重用。另一个好处(静态类型语言)是传入传出方法的所有东西都被类型检查器检查,因此逻辑错误会更有可能把自己表现为类型错误。把这个函数式编程的哲学应用到对象世界里以为着使对象不可变。 前面一章介绍的Array数组是一个所有对象都共享相同类型的可变序列。比方说Array[String]仅包含String。尽管实例化之后你无法改变Array的长度。因此,Array是可变的对象。 说到共享……
IntelliJ IDEA下Maven创建Scala项目的方法步骤
环境:IntelliJ IDEA 版本:Spark-2.2.1 Scala-2.11.0 利用 Maven 第一次创建 Scala 项目也遇到了许多坑 创建一个 Scala 的 WordCount 程序 第一步:IntelliJ IDEA下安装 Scala 插件 安装完 Scala 插件完成 第二步:Maven 下 Scala 下的项目创建 正常创建 Maven 项目(不会的看另一篇 Maven 配置) 第三步:Scala 版本的下载及配置 通过Spark官网下载页面http://spark.apache.org/downloads.html 可知“Note: Starting version 2.0, Spark is built with Scala 2.11 by default.”,建议下载Spark2.2对应的 Scala 2.11。 登录Scala官网http://www.scala-lang.org/,单击download按钮,然后再“Other Releases”标题下找到“下载2.11.0 根据自己的系统下载相应的版本 接下来就是配置Scala 的环境变量……
Scala入门教程详解
Scala简介 Scala(Scala Language的简称)语言是一种能够运行于JVM和.Net平台之上的通用编程语言,既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Odersk于2001开发,2004年开始程序运行在JVM与.Net平台之上,由于其简洁、优雅、类型安全的编程模式而受到关注。 Scala语言具有如下特点: 1 纯面向对象编程语言 (1) Encapsulation/information hiding. (2)Inheritance. (3)Polymorphism/dynamic binding. (4)All predefined types are objects. (5) All operations are performed by sending messages to objects. (6)All user-defined types are objects. 2 函数式编程语言 定义:Functional programming is a programming paradigm that treats computation as the evaluation of mathema……
scala+redis实现分布式锁的示例代码
1、redis的底层是单例模式,意思是同一个脚本同一时刻只能有一个线程来执行,利用redis的这个特性来实现分布式锁。 首先实现工具类 package utils import CacheManager /** * redis分布式锁 */object RedisTool { //加锁是否成功标志 val LOCK_SUCCESS:String = "OK" //即当key不存在时,我们进行set操作;若key已经存在,则不做任何操作; val SET_IF_NOT_EXIST:String = "NX" //意思是我们要给这个key加一个过期的设置,具体时间由第五个参数决定。 val SET_WITH_EXPIRE_TIME:String = "PX" val RELEASE_SUCCESS:String = "1" /** * * @param lockKey 锁 * @param requestId 请求标识 * @param expireTime 超期时间 * @param isPersist 临时缓存或者永久缓存 */ def tryGetDistributedLock(lockKey:Stri……
Java和scala实现 Spark RDD转换成DataFrame的两种方法小结
一:准备数据源 在项目下新建一个student.txt文件,里面的内容为: 1,zhangsan,20 2,lisi,21 3,wanger,19 4,fangliu,18 二:实现 Java版: 1.首先新建一个student的Bean对象,实现序列化和toString()方法,具体代码如下: package com.cxd.sql;import java.io.Serializable;@SuppressWarnings("serial")public class Student implements Serializable { String sid; String sname; int sage; public String getSid() { return sid; } public void setSid(String sid) { this.sid = sid; } public String getSname() { return sname; } public void setSname(String sname) { this.sname = sname; } public int getSage() { return sage; } public void setSage(int sage) { this.sage = sage; } @Override public String toString() { return "Student [sid=" + sid + ", sname=" + sname + ", sage=……
以上就是本次介绍的Scala电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。
上一篇:Egret HTML5游戏开发指南
下一篇:Processing编程学习指南