第七章:连接到数据库

主要内容:

  1. SBT构建数据库。
  2. webKanban中,通过Squeryl连接数据库。
  3. 完善weKanban。

第六章,我们学习了如何使用SBT(Simple Build Tool)和Scalaz HTTP模组构建一个简单的Web应用。但这个应用在前面章节中未算竣工。原因是:构建一个函数式的Kanban应用,你的应用需要存储信息,即存储到持久化环境中。

注意 本章是第六章的延续,如果你未曾读过上一章节,一些本章节的相关部分很难跟进。

本章将完成上一个章节未完成的部分。你将学习如何检索数据并存储到关系型数据中。我将介绍一个Scala ORM(Object Relational Mapping)工具——Squeryl。并将探索如何安全地模拟数据字典。你将构建一个应用存储,以及在Kanban面板上展示该存储数据。在此过程中,你将探索Scala中如何与数据库工作。尽管本章关注于数据库方面的内容,也会介绍到Scalaz和SBT在数据库方面的使用。在构建应用之前,让我们回顾一下我们所需要实现weKanban应用的用户故事:

As a customer I want to create a new user story so that I can add stories to the ready phase.
As a developer I want to move cards (stories) from one phase to another to signal progress.

下面开始构建基于用户故事的weKanban应用。

Read more

第六章:构建函数式风格的Web应用

主要内容:

  1. 使用SBT(Simple Build Tool)工具构建项目。
  2. Scalaz HTTP 模块。
  3. 创建一个WEB应用程序weKanban。

本书的第二部分开始,将关注于Scala函数式编程的实际应用。现在早已有Web应用框架 LiftPlayframework 开构建web应用程序。但是本章介绍的是一个有趣的Scala http库——Scalaz。这个简单的库让你更加专注于函数式web应用的构建,而不用担心全栈的Web框架带来的复杂性问题。
HTTP 请求并产生一个HTTP响应。每个URL端点被映射到一个函数中,这个函数则用来处理request。因为你创建的是一个函数式风格,web应用程序的状态被显式地被指定在每个请求中。这样想的好处是,你可以将web应用程序进行组合或者使用高阶的组合。web框架的对应策略是无状态的和可变的。在本章内容中,你将学习到使用函数式编程来构建一个web应用框架。
要到达终点,首先要知道如何创建一个应用程序,如何使用。或许我们使用过了比较多的构建工具,但是比较标准的构建工具是SBT。这里将介绍如何配置和使用SBT来构建Scala Web项目。

Read more

第五章:函数式编程

主要内容

  1. 为什么函数式编程
  2. FP和OOP
  3. 各种形式的函数
  4. Monads以及应用实例

前面部分或多或少介绍了Scala的函数式编程,或在Scala的面向对象结构中混入了函数式编程。本章将专注于函数式编程概念,以及它们是如何在Scala中实现的。本章主要目的是使你对函数式编程有个清晰的感知,并帮助你编写函数式编程风格代码。

函数式编程 是一个编程范式,将计算行为模拟为表达式的求值。而这个表达式使用函数构建,不带有可变状态和副作用。函数式编程的起源是值得探索的1 。相信与否,函数式编程始于约1930,Alonzo Church 介绍的 λ演算2 。一个λ演算是一套用于研究函数定义、函数应用和递归的形式系统。λ演算的函数都是第一类值(first-class value);函数可以接收其它函数作为参数,返回函数作为输出(高阶函数)。

Read more

第四章:函数数据结构

主要内容:

  1. 类型参数化的协变和逆变(Covariance and contravariance)
  2. 高阶函数(high-order function)
  3. 自定义函数对象(function objects)
  4. 容器层次和并行容器(collection hierachy and parallel collection)

本章将介绍Scala中有趣的部分: Scala集合完全支持两种类型的数据结构——可变和不可变。
在理解Scala集合优越性之前,你需要知道两个概念: 类型参数化(type parameterization)和高阶函数(higher-order functions)。类型参数化允许你创建的类型是其他参数的类型(类似于Java的泛型(generics))。高阶函数则是你创建 的函数可以将其他函数作为参数。这两个概念使得你可以创意通用的、可重用的组件,如Scala集合。
Scala集合是所有Scala特征中最强大的一部分。Scala库中实现了所有你需要的通用数据结构,他对于所有Scala开发者来说都是必不可少的。最新添加的集合库是并行集合。并行集合使得处理数据并行性问题变得容易。你将会看到并行集 合在大数据集中如何处理,这部分将踏进有趣的路程。

Read more

第三章:Scala OOP

主要内容:

  1. 构建MongoDB驱动
  2. case模式匹配
  3. 命名和默认参数

上一章讲了Scala的基础部分,这章介绍Scala面向对象的特性。面向对象编程不是新鲜事物,但是Scala在面向对象基础上添加了一些新的特性。
本章将使用Scala构建MongoDB的驱动。MongoDB也是可伸缩的(scalable),基于文档的数据库。你将使用Scala面向对象构造器快速构建MongoDB驱动程序,并在此讲述每一步的概念。Scala使得面向对象得到革新,其中包括特征(trait)。特征相似与Java的半实现的抽象类(abstract classes)。本章将介绍特征在Scala程序中是如何工作的。同时,本章也将介绍容器类(case classes),容器类对于构建不可变类是非常有用的,另外也会介绍并发和数据-对象转换。容器类是函数式编程和面向对象编程的桥梁。

Read more