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!