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!