互联网
类型
8.3
豆瓣评分
可以朗读
语音朗读
570千字
字数
2016-06-01
发行日期
展开全部
主编推荐语
对于Scala新手来说这是一本非常不错的入门书,对于老手来说也是一本夯实基础,检视自己所学知识的好书。
内容简介
Scala是一门现代编程语言,作者是Martin Odersky(javac之父),受到Java、Ruby、Smalltalk、ML、Haskell、Erlang等语言的影响。Scala是一门纯面向对象(OOP)语言。每个变量都是一个对象,每个“操作符”都是方法。它同时也是一门函数式编程(FP)语言,可以将函数作为参数传递。你可以用OOP、FP,或者两者结合的方式编写代码。Scala代码在JVM上运行,可以无缝使用已有的丰富的Java类库。接触语言的第一天你就能编出有趣的程序,但是这门语言很深奥,随着学习的深入,你会发现更新、更好的编写代码的方式。Scala会改变你对编程的看法——这是一件好事。
目录
- 版权信息
- O’Reilly Media,Inc.介绍
- 译者序
- 作者介绍
- 译者介绍
- 封面介绍
- 前言
- 第1章 字符串
- 1.1 测试字符串的相等性
- 1.2 创建多个字符串
- 1.3 分隔字符串
- 1.4 字符串中的变量代换
- 1.5 挨个处理字符串中的字符
- 1.6 字符串中的查找模式
- 1.7 字符串中的替换模式
- 1.8 抽取String中模式匹配的部分
- 1.9 访问字符串中的一个字符
- 1.10 在String类中添加自定义的方法
- 第2章 数值
- 2.1 从字符串到数值
- 2.2 数值类型转换
- 2.3 重载默认数值类型
- 2.4 替代++和--
- 2.5 浮点数的比较
- 2.6 处理大数
- 2.7 生成随机数
- 2.8 创建一个数值区间、列表或者数组
- 2.9 格式化数值和金额
- 第3章 控制结构
- 3.1 for和foreach循环
- 3.2 在for循环中使用多个计数器
- 3.3 在for循环中嵌入if语句(卫语句)
- 3.4 创建for表达式(for/yield组合)
- 3.5 实现break和continue
- 3.6 像三元运算符一样使用if
- 3.7 像switch语句一样使用匹配表达式
- 3.8 一条case语句匹配多个条件
- 3.9 将匹配表达式的结果赋值给变量
- 3.10 访问匹配表达式缺省case的值
- 3.11 在匹配表达式中使用模式匹配
- 3.12 在匹配表达式中使用Case类
- 3.13 给Case语句添加if表达式(卫语句)
- 3.14 使用匹配表达式替换isInstanceOf
- 3.15 在匹配表达式中使用List
- 3.16 用try/catch匹配一个或者更多的异常
- 3.17 在try/catch/finally块中使用变量前定义变量
- 3.18 创建自定义控制结构
- 第4章 类和属性
- 4.1 创建一个主构造函数
- 4.2 控制构造函数字段的可见性
- 4.3 定义辅助构造函数
- 4.4 定义私有的主构造函数
- 4.5 设置构造函数参数的默认值
- 4.6 覆写默认的访问和修改方法
- 4.7 阻止生成getter和setter方法
- 4.8 将代码块或者函数赋给字段
- 4.9 设置未初始化的var字段类型
- 4.10 在继承类时处理构造函数参数
- 4.11 调用父类的构造函数
- 4.12 何时使用抽象类
- 4.13 在抽象基类(或者特质)里定义属性
- 4.14 用Case类生成模板代码
- 4.15 定义一个equals方法(对象的相等性)
- 4.16 创建内部类
- 第5章 方法
- 5.1 控制方法作用域
- 5.2 调用父类的方法
- 5.3 方法参数默认值
- 5.4 使用参数名
- 5.5 定义一个返回多个值(Tuples)的方法
- 5.6 调用getter/setter方法时不使用括号
- 5.7 创建接受变参的方法
- 5.8 方法的异常声明
- 5.9 支持链式调用编码风格
- 第6章 对象
- 6.1 对象的强制转换
- 6.2 Java.class的Scala等价类
- 6.3 确定对象所属的类
- 6.4 用Object启动一个应用
- 6.5 用object创建单例
- 6.6 用伴生类创建静态成员
- 6.7 将通用代码放入包对象
- 6.8 不使用new关键字创建对象实例
- 6.9 在Scala中用apply方法实现工厂方法
- 第7章 包和导入
- 7.1 花括号风格的包记号法
- 7.2 引入一个或多个成员
- 7.3 在导入时重命名成员
- 7.4 在引入时隐藏一个类
- 7.5 使用静态导入
- 7.6 在任意地方使用Import语句
- 第8章 特质
- 8.1 特质用作接口
- 8.2 使用特质中的抽象字段和实际字段
- 8.3 像抽象类一样使用特质
- 8.4 简单混入特质
- 8.5 通过继承来限制特质的使用范围
- 8.6 限定特质只可用于指定类型的子类
- 8.7 保证特质只能被添加到只有一个特定方法的类型
- 8.8 为对象实例中添加特质
- 8.9 像特质一样继承一个Java接口
- 第9章 函数式编程
- 9.1 使用函数字面量(匿名函数)
- 9.2 将函数作为变量
- 9.3 定义接受简单函数作为参数的方法
- 9.4 更多复杂的函数
- 9.5 使用闭包
- 9.6 使用部分应用函数
- 9.7 创建返回函数的函数
- 9.8 创建部分应用函数
- 9.9 一个真实的例子
- 第10章 集合
- 10.1 理解集合的层级结构
- 10.2 选择一个集合类
- 10.3 用一个集合方法解决一个问题
- 10.4 理解集合的性能
- 10.5 在创建集合时声明一个类型
- 10.6 理解可变变量与不可变集合
- 10.7 将Vector“变为”不可变序列
- 10.8 把ArrayBuffer作为可变序列的第一选择
- 10.9 用foreach遍历一个集合
- 10.10 用for循环遍历一个集合
- 10.11 使用zipWithIndex或者zip创建循环计数器
- 10.12 迭代器的使用
- 10.13 用for/yield实现集合间的转换
- 10.14 用map实现集合的变换
- 10.15 展平列表的列表与扁平化问题
- 10.16 map,flatten和flatMap的组合
- 10.17 用filter过滤一个集合
- 10.18 从集合中提取元素序列
- 10.19 序列的分割(groupBy、partition等)
- 10.20 用reduce和fold方法遍历集合
- 10.21 从序列中提取不重复的元素
- 10.22 合并序列集合
- 10.23 用zip将两个序列集合合并为一对
- 10.24 在集合上创建一个惰性视图
- 10.25 利用Range创建集合
- 10.26 创建使用枚举
- 10.27 当需要一堆元素时使用元组
- 10.28 集合排序
- 10.29 通过mkString将集合转换成字符串
- 第11章 列表、数组、映射、集及其他
- 11.1 创建和填充列表的不同方式
- 11.2 创建可变List
- 11.3 为List添加元素
- 11.4 从List(或者ListBuffer)中删除元素
- 11.5 合并或连接列表
- 11.6 使用List的懒惰版本,Stream
- 11.7 创建和更新数组的不同方式
- 11.8 创建大小可变的数组(ArrayBuffer)
- 11.9 删除Array和ArrayBuffer的元素
- 11.10 数组排序
- 11.11 创建多维数组
- 11.12 创建映射
- 11.13 选择一种Map实现
- 11.14 为可变映射添加、更新或删除元素
- 11.15 为不可变映射添加、更新或删除元素
- 11.16 访问映射的值
- 11.17 遍历映射
- 11.18 从映射中获得所有的键或者值
- 11.19 反转键值
- 11.20 测试映射中键/值的存在
- 11.21 过滤映射
- 11.22 根据键或者值对映射排序
- 11.23 找到映射中最大的键或者值
- 11.24 给集添加元素
- 11.25 从集中删除元素
- 11.26 使用可排序集
- 11.27 使用队列
- 11.28 使用栈
- 11.29 使用Range
- 第12章 文件和进程
- 12.1 如何打开和读取文本文件
- 12.2 写入文本文件
- 12.3 读写二进制文件
- 12.4 如何处理文本文件中的每个字符
- 12.5 如何处理CSV文件
- 12.6 将字符串伪装为文件
- 12.7 使用序列化
- 12.8 列出目录中的文件
- 12.9 列举目录之下的子目录
- 12.10 执行外部命令
- 12.11 执行外部命令并使用标准输出
- 12.12 处理外部命令的标准输出和标准错误输出
- 12.13 构建命令管道
- 12.14 重定向外部命令的标准输出和标准输入
- 12.15 在进程中使用AND(&&)和OR(||)
- 12.16 外部命令中处理通配符
- 12.17 如何在不同目录下运行进程
- 12.18 在运行命令时设置环境变量
- 12.19 执行外部命令的方法索引
- 第13章 Actors和并发
- 13.1 Actor简单入门
- 13.2 创建构造函数有参数的actor
- 13.3 Actor之间如何通信
- 13.4 理解Akka Actor生命周期方法
- 13.5 启动Actor
- 13.6 停止Actors
- 13.7 关闭Akka Actor系统
- 13.8 用watch监控Actor的死亡
- 13.9 Futures的简单并发
- 13.10 给Actor发消息并等待回复
- 13.11 用become切换不同状态
- 13.12 使用并发集合
- 第14章 命令行任务
- 14.1 Scala REPL初体验
- 14.2 往REPL中粘贴和加载代码块
- 14.3 在REPL的Classpath中添加JAR文件和类
- 14.4 在REPL中运行Shell命令
- 14.5 用scalac命令编译,scala命令运行
- 14.6 反汇编和反编译Scala代码
- 14.7 寻找Scala类库
- 14.8 用scaladoc生成文档
- 14.9 更快的命令行编译器fsc
- 14.10 将Scala作为脚本语言使用
- 14.11 通过脚本访问命令行参数
- 14.12 在Scala shell脚本中输入提示
- 14.13 让Scala脚本运行得更快
- 第15章 Web服务
- 15.1 从Scala对象中创建JSON字符串
- 15.2 从包含集合的类中生成JSON字符串
- 15.3 从JSON字符串生成简单Scala对象
- 15.4 将JSON数据解析成为对象的数组
- 15.5 用Scalatra创建Web服务
- 15.6 用Scalatra挂载替换XML Servlet映射
- 15.7 访问Scalatra Web服务的GET参数
- 15.8 用Scalatra处理POST请求数据
- 15.9 创建一个简单的GET请求客户端
- 15.10 向POST链接发送JSON数据
- 15.11 获取URL Headers
- 15.12 发送请求时设置链接的Headers
- 15.13 用Play框架创建一个GET请求的Web服务
- 15.14 向Play框架的web服务POST JSON数据
- 第16章 数据库和持久化
- 16.1 用JDBC连接MySQL
- 16.2 用Spring Framework连接数据库
- 16.3 连接MongoDB并且插入数据
- 16.4 用insert,save或者+=把文档插入到MongoDB
- 16.5 搜索一个MongoDB集合
- 16.6 更新MongoDB集合中的文档
- 16.7 获取MongoDB文档ID
- 16.8 删除MongoDB集合中的文档
- 16.9 快速浏览Slick
- 第17章 与Java交互
- 17.1 与Java集合的转换
- 17.2 给Scala方法添加异常注解以便与Java交互
- 17.3 使用@SerialVersionUID和其他注解
- 17.4 使用Spring框架
- 17.5 注解变长参数方法
- 17.6 当Java的代码需要JavaBeans
- 17.7 包装特质的实现
- 第18章 简单构建工具(SBT)
- 18.1 用SBT创建一个项目目录结构
- 18.2 用SBT编译、运行和打包一个Scala项目
- 18.3 用SBT和ScalaTest运行测试
- 18.4 用SBT管理依赖
- 18.5 控制所使用的可管理依赖的版本
- 18.6 创建有子项目的项目
- 18.7 在Eclipse中使用SBT
- 18.8 生成项目API文档
- 18.9 指定一个Main类运行
- 18.10 使用GitHub项目作为项目依赖
- 18.11 告诉SBT如何找到一个仓库(使用Resolvers)
- 18.12 通过SBT堆栈跟踪解决问题
- 18.13 设置SBT日志等级
- 18.14 部署一个单独的、可执行的JAR文件
- 18.15 发布类库
- 18.16 用Build.scala取代build.sbt
- 18.17 在SBT中使用Maven仓库的类库
- 18.18 用Ant构建Scala项目
- 第19章 类型
- 19.1 创建使用泛型的类
- 19.2 创建一个接收简单泛型的方法
- 19.3 使用鸭子类型(结构化类型)
- 19.4 让可变集合非变
- 19.5 让不可变集合协变
- 19.6 创建所有元素都是基本类型的集合
- 19.7 给封闭模型选择性添加新行为
- 19.8 用类型构建功能
- 第20章 惯用法
- 20.1 创建没有副作用的方法(纯函数)
- 20.2 选择不可变对象
- 20.3 思考“面向表达式编程”
- 20.4 使用匹配表达式和模式匹配
- 20.5 从代码中根除null值
- 20.6 使用Option/Some/None模式
展开全部
出版方
机械工业出版社有限公司
机械工业出版社是全国优秀出版社,自1952年成立以来,坚持为科技、为教育服务,以向行业、向学校提供优质、权威的精神产品为宗旨,以“服务社会和人民群众需求,传播社会主义先进文化”为己任,产业结构不断完善,已由传统的图书出版向着图书、期刊、电子出版物、音像制品、电子商务一体化延伸,现已发展为多领域、多学科的大型综合性出版社,涉及机械、电工电子、汽车、计算机、经济管理、建筑、ELT、科普以及教材、教辅等领域。