编辑: AA003 | 2019-07-16 |
1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 1.14 1.15 1.16 目录 前言 介绍 提取器 序列提取 无处不在的模式 模式匹配与匿名函数 类型 Option Try 与错误处理 类型 Either 类型 Future 实战中的 Promise 和 Future 高阶函数与 DRY 函数的部分应用和柯里化 类型类 路径依赖类型 结语
1 Scala 初学指南 这本书是什么 本书是 The Neophyte'
s Guide to Scala 的中文翻译. The Neophyte'
s Guide to Scala 是 Daniel Westheide 写的一系列有关 Scala 的文章. 原作者在 leanpub 中将此系列文章打包成书,如果你觉得此书对你有帮助, 请到 这里 给予原作者支持! 为什么会有这本书 在读书和学习过程中,个人一直很难坚持做好一件事情. 对于专业知识,凡不明白 的,我都想一探到底, 但由于自身的知识缺陷太大,很多东西到最后都无法坚持下 来,很容易产生挫败感. 遂借此机会,试图克服这一缺点. 目前已经花了整整一个月的时间去翻译和校对,基本算是完成,不愧初心. 当然, 凡事都不是尽善尽美的,翻译中必然存在理解偏差和用词不当的地方. 欢迎任何 Issues 和 Pull Requests ! 前言
2 介绍 2012年秋天,超过五万人注册了 Martin Odersky 先生在 Coursera 上开设的 Functional Programming Principles in Scala 课程. 这是一个巨大的数字. 他们可 能是第一次接触 Scala、函数式编程. 2013年,这个课程又开始了,并将更多的学 生和开发者带入了 Scala 和函数式编程的世界. 如果你正在看这篇文章,很可能你也是其中之一,或者通过其他方式已经学习 Scala 了. 不管怎样,如果你对探索这门优美的语言感到兴奋,但又不知道该如何 去学,那这本书就是为你准备的. 尽管 Coursera 上的这门课程已经提供了很多材料来介绍 Scala, 但其时间有限, 很难把所有东西都解释清楚, 对于初学者的你,Scala 的一些特性看起来就像魔法 一样. 可能你知道如何使用它们,但无法完全掌握其背后的原理, 更重要的是, 你无法了解为什么这样做就是对的. 自从这门课程的第一次开设,我就开始 撰写一系列博客, 意在把事情理清楚,移 除初学者心中的问号. 这份电子书就基于这系列博客. 鉴于超多人都给出了正面 评价,我决定把所有文章编译成书. 在这本书里,我会解释 Scala 语言的一些特性,一些我曾经遇到过麻烦的特性. 之 前大部分时候,我找不到对这些特性的好的解释,只能摸石头过河. 为了不让读者 步我的后尘,我会在写作中给出这些特性的惯例用法. 介绍的已经差不多了. 在开始这本书之前,读者要知道,虽然并不要求参与过 Coursera 上的那门课程, 但是之前上过 Coursera 的 Scala 课程,会有利于本书的 阅读, 我时不时也会引用课程上的一些知识点. 介绍
3 提取器 在 Coursera 上,想必你遇到过一个非常强大的语言特性: 模式匹配 . 它可以解 绑一个给定的数据结构. 这不是 Scala 所特有的,在其他出色的语言中,如Haskell、Erlang,模式匹配也扮演着重要的角色. 模式匹配可以解构各种数据结构,包括 列表 、 流 ,以及 样例类 . 但只有这些数 据结构才能被解构吗,还是可以用某种方式扩展其使用范围? 而且,它实际是怎么 工作的? 是不是有什么魔法在里面,得以写些类似下面的代码? case class User(firstName: String, lastName: String, score: Int) def advance(xs: List[User]) = xs match { case User(_, _, score1) :: User(_, _, score2)score1 - score2 case _ =>