鍍金池/ 教程/ 區(qū)塊鏈/
注冊進程名稱
錯誤處理
完整示例
分布式編程
消息傳遞
if 與 case
健壯性
映射 (Map)
高階函數(shù) (Fun)
輸出至終端
更多關于列表的內容
內置函數(shù) (BIF)
模塊與函數(shù)
將大程序分在多個文件中
匹配、Guards 與變量的作用域
超時
列表
完整示例
頭文件
標準模塊與使用手冊
進程
記錄
增加健壯性后的完整示例
Erlang Shell
原子類型

在 messager 系統(tǒng)添加的另外一種東西是宏。在 mess_config.hrl 文件中包含如下的定義:

%%% Configure the location of the server node,
-define(server_node, messenger@super).

這個頭文件被包括到了 mess_server.erl 文件中:

-include("mess_config.hrl").

這樣,在 mess_server.erl 中出現(xiàn)的每個 server_node 都被替換為 messenger@super。

宏還被用于生成服務端進程:

spawn(?MODULE, server, [])

這是一個標準宏(也就是說,這是一個系統(tǒng)定義的宏而不是用戶自定義的宏)。?MODULE 宏總是被替換為當前模塊名(也就是在文件開始的部分的 -module 定義的名稱)。宏有許多的高級用法,作為參數(shù)只是其中之一。

Messager 系統(tǒng)中的三個 Erlang(.erl)文件被分布編譯成三個獨立的目標代碼文件(.beam)中。當執(zhí)行過程中引用到這些代碼時,Erlang 系統(tǒng)會將它們加載并鏈接到系統(tǒng)中。在本例中,我們把它們全部放到當前工作目錄下(即你執(zhí)行 "cd" 命令后所在的目錄)。我們也可以將這些文件放到其它目錄下。

在這個 messager 例子中,我們沒有對發(fā)送消息的內容做出任何假設和限制。這些消息可以是任何合法的 Erlang 項。