第一部分 Scala: 基础

擒贼先擒王,让我们先从最重要的地方开始。

本书的第1章重点讲述的是Scala本身,以及为什么你应该选择Scala作为自己的下一个语言。 你将要学习到Scala与你熟悉的其它语言相比有哪些高级特性。 如果你是一位面向对象世界里的程序员,Scala会使你迅速感到得心应手,如果你使用过某个函数式编程语言,在Scala的世界里,你不会感到陌生,是的,Scala同时支持这两种编程范式。

Scala作为少数的几种将面向对象与函数式完美结合在一起的语言之一,无疑将成为你工具箱中一件强大的武器。 如果你此时正陷于JAVA程序复杂笨重的泥潭当中(原文没有这么说),希望找到一种能够提高生产率并且可以复用已有JAVA代码的语言,Scala正是你的救星。 作为一种运行在JAVA虚拟机上的语言,Scala可以很好的与JAVA进行整合和相互调用。

当我们投身于一个陌生的环境,能够得到一丝温暖和舒适是很重要的,这可以很好的慰籍我们胆怯的信心,增强坚持的动力。 学习新知识也是如此。 第2章通过讲述一系列Scala的基础知识和环境,让读者能够将Scala运转起来并编写自已的Scala代码。 简单起见,在学习的最初阶段,我们主要通过Scala解释器和REPL环境编写和运行代码。 另外,你还可以学习到基本的Scala类型(type)、函数(function)、for表达式(for-comprehension)、模式匹配(pattern matching)等知识。

第3章介绍Scala的面向对象特性,包括一些其它静态类型语言没有的特性。 你会创建一个MongoDB(一种可扩展的文档数据库)的Scala驱动程序。 这个驱动的程序的创建,采用的是Scala为我们提供的面向对象设计。 你还将探索特质(traits)在创建Scala应用程序时的使用方式,以及样本类(case class)的重要性。

在第4章,你将学习到Scala的集合(collections),它往往支持两种数据结构——不可变的(immutable)和可变的(mutable)。 为了更好的理解和利用Scala的集合,你需要理解两个概念:类型参数化(type parameterization)和高阶函数(higher-order functions)。 类型参数化可以让我们在创建类型时,附加另一个类型为参数(类似JAVA的泛型)。 高阶函数能够让我们创建以函数为参数的函数。这两个概念使得我们能够创建泛型化和可利用的组件,例如Scala集合。

集合是Scala最强大的特性之一。 集合库中实现了所有常用的数据结构,是Scala开发者必不可少的工具。 并行集合(parallel collection)是最近添加到集合库中的成员,它可以让我们很方便的处理数据并行性问题。

从之前几章的例子中一路走下来,尽管你已经编写了很多函数式风格的程序了,但是我们还是有必要在第一部分的最后一章,也就是第5章,着重举例讲述一下函数式编程。 在有些例子中,函数式编程显而易见的,而有些则是夹杂在面向对象设计当中。除些之外,本章也涉及到了一些monads和实用性的例子。

链接