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

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

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

這個(gè)頭文件被包括到了 mess_server.erl 文件中:

-include("mess_config.hrl").

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

宏還被用于生成服務(wù)端進(jìn)程:

spawn(?MODULE, server, [])

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

Messager 系統(tǒng)中的三個(gè) Erlang(.erl)文件被分布編譯成三個(gè)獨(dú)立的目標(biāo)代碼文件(.beam)中。當(dāng)執(zhí)行過(guò)程中引用到這些代碼時(shí),Erlang 系統(tǒng)會(huì)將它們加載并鏈接到系統(tǒng)中。在本例中,我們把它們?nèi)糠诺疆?dāng)前工作目錄下(即你執(zhí)行 "cd" 命令后所在的目錄)。我們也可以將這些文件放到其它目錄下。

在這個(gè) messager 例子中,我們沒(méi)有對(duì)發(fā)送消息的內(nèi)容做出任何假設(shè)和限制。這些消息可以是任何合法的 Erlang 項(xiàng)。