展开全部

主编推荐语

对于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、科普以及教材、教辅等领域。