Erlang模塊
模塊是在一個單一的文件重新組合的函數,在一個單一的名稱。此外,在 Erlang 所有函數必須在模塊定義。
大部分像算術,邏輯和布爾操作符的基本函數已經 Erlang 內部集成提供並且可以直接調用,因爲在運行程序時的默認模塊被加載。一個模塊中使用定義的所有其他函數需要使用形式 Module:Function (參數) 來調用。
定義模塊
有了模塊,我們可以聲明兩個東西:函數和屬性。屬性就類似它的名稱,描述模塊本身的元數據,這應該是明顯的向外界的功能,如:代碼作者等等。這種元數據是非常有用的,因爲它給編譯器提示讓它知道怎麼做自己的工作,而且它可以讓人們檢索編譯後的代碼中的有用信息,而不必徵求源代碼。
函數聲明的語法如下 -
語法
-module(modulename)
這裏,modulename 是模塊的名稱。這必須在模塊代碼的第一行。下面的程序顯示了一個叫 helloworld 模塊的一個例子。
示例
-module(helloworld).
-export([start/0]).
start() ->
io:fwrite("Hello World").
上面的代碼的輸出結果是 -
Hello World
模塊屬性
模塊屬性定義模塊的某些特性。模塊屬性包含一個標籤和值。
屬性的一般語法是 -
語法
-Tag(Value)
下面的例子程序是用來演示模塊屬性如何使用 -
示例
-module(helloworld).
-author("TutorialPoint").
-version("1.0").
-export([start/0]).
start() ->
io:fwrite("Hello World").
以上程序定義2個自定義屬性:author 和 version,分別用來表示該程序的作者和版本號。
上面的代碼的輸出結果是 -
Hello World
預先內置屬性
Erlang 有可連接到模塊的某些預先內置構建的屬性,讓我們來看看。
導出
導出屬性將使用函數和參數數量列表導出到其他模塊。它將定義模塊接口。我們在前面的例子中已經看到了這一點。
語法
export([FunctionName1/FunctionArity1,.,FunctionNameN/FunctionArityN])
在這裏,
FunctionName − 這是程序中的函數名稱;
FunctionArity − 這是與函數相關聯的參數數目;
示例
-module(helloworld).
-author("TutorialPoint").
-version("1.0").
-export([start/0]).
start() ->
io:fwrite("Hello World").
上面的代碼的輸出結果是 -
Hello World
導入
導入屬性用於從另一模塊導入函數以將其在本地使用
語法
-import (modulename , [functionname/parameter]).
在這裏,
Modulename − 這是需要導入的模塊的名稱
functionname/parameter − 這是在模塊中需要導入的函數
示例
-module(helloworld).
-import(io,[fwrite/1]).
-export([start/0]).
start() ->
fwrite("Hello, world!\n").
在上面的代碼中,我們使用的是 import 這個關鍵字來導入庫 「io」,指定導入 fwrite 函數。所以,現在每當調用fwrite函數,不必每次都要帶上模塊的名稱。
上面的代碼的輸出結果是 -
Hello, world!