English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Erlang モジュール

モジュールは、単一のファイルに単一の名前で再結合された関数のセットです。また、Erlangのすべての関数はモジュール内で定義する必要があります。

ほとんどの基本的な機能、例えば算術、論理、ブール演算子は既に利用可能です。なぜなら、デフォルトのモジュールはプログラムの実行時にロードされるからです。使用するモジュールで定義された他の関数は、以下を使用して定義する必要があります。 Module: Function (Arguments) の形式で呼び出されます。

モジュール定義

モジュールを使用すると、関数と属性の2種類の内容を宣言できます。属性は、モジュール自体のメタデータを説明するもので、例えば、名前、外部に公開されるべき関数、コードの著者などです。このメタデータは非常に有用で、コンパイラにどのように作業すべきかを示唆し、コンパイルされたコードから有用な情報を検索するために役立ちます。

関数宣言の文法は以下の通りです :

文法

-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("こんにちは、world!\n").

上記のコードでは、ライブラリ「io」をインポートするために「import」このキーワードを使用しています。指定してインポートした「fwrite」関数を使用するたびに、モジュールの名前を付けなくても大丈夫です。

上記のコードの出力結果は以下の通りです -

こんにちは、world!