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! 

上一篇: Erlang函數 下一篇: Erlang遞歸