极客学院团队出品 · 更新于 2018-11-28 11:00:43

第 二 章 结构和Erlang术语

Erlang 系统由各种模块(module)组成。模块则由函数(function)和属性(attribute)构成。函数或者只能在某个模块范围内中被调用,或者是可以被导出(exported)的函数,例如可以被其他模块中的其他函数所调用。属性名称必须带有 - 前缀,且放置于模块的开头。

在利用 Erlang 设计的系统中,任务是通过进程(process)来完成的。进程是一种能够在很多模块中使用函数的任务。进程间通过传递消息(sending message)来进行通信。进程不仅能够接收(receive)发送给它们的消息,而且还能确定准备接收何种消息。当接收进程还未准备好接收消息时,消息会自动进入排队等候状态。

进程能够通过创建一个链接来监控其他进程是否存在。当某一进程终止时,它会自动向其所链接的进程发送退出信号(exit signal)。默认情况下,当进程接收到退出信号时,就会终止并将该信号传播给它所链接的进程。通过捕获退出信号(trapping exits),进程可以改变这一默认行为,从而导致所有发送给一个进程的退出信号都转变成消息。

纯函数(pure function):当参数相同时,函数返回值也相同,与函数调用上下文无关。这一特点与数学上的函数比较一致。不纯的函数,在 Erlang 中被称之为具有副作用

副作用通常发生在以下这些情况中:函数(a)发送消息;(b)接收消息;(c)调用 exit 命令;(d)调用 BIF1 从而改变进程环境或操作模式(比如:get/1put/2erase/1process_flag/2,等等)

1. Erlang 内建函数,Built-In Function 的缩写。

警告:本文档中的一些范例代码效率并不理想,希望你能加以改进。

上一篇: 文档目的 下一篇: 软件工程的原则