モジュールの属性とは、モジュールのファイルの先頭部分にある、
-attributeTag( . . . ).
という書式で指定される、そのモジュールの特徴のことです。
モジュールの属性にはユーザが定義するものと、定義済みのものがあります。
ユーザが定義するものは、外部から属性を指定してその値を得るというような使い方や、 何かを明示したいときに使用します。
定義済みのものは、モジュールに必須のものと、そうでないものがあります。 最初は必要なところだけを覚えて行くような形でいいと思います。
最初に覚えるべきモジュールの属性は、モジュールの宣言、インポート宣言、エクスポート宣言 だけで大丈夫です。他は適宜取り扱っていきたいと思います。
ファイル名を「module_name.erl」とすると、モジュールの最初に
-module(module_name).
と宣言しなければならなりません。これをモジュール宣言と言います。
ファイル名とモジュール名は同一である必要があります。
ファイル名及び、モジュール名は大文字ではなく、小文字の名前にして下さい。
他の言語はファイル名を大文字にするものが多いので注意して下さい。
モジュール宣言
-module(modulename).
通常は関数を呼び出す際には
module_name:function_name(var1,var2)
とする必要があります。
インポート宣言をすることでモジュール名を指定しなくても関数が使えるようになります。
インポート宣言
-import(modname, [function1/arity1,function2/arity2]).
エクスポート宣言は関数を外部に公開するために利用します。
宣言された関数でないと、モジュール外から利用することができません。
引数がリストとなっていることに注意して下さい。
これはJavaでいうと、privateからpublicにスコープを変更することです。
エクスポート宣言
-export([function1/arity1,function2/arity2]}.
以下は必要な時に使うという程度です。
小さいプログラムを組む際にはあまり利用しません。
コンパイルオプションの宣言
-compile(Options).
オプションの種類
全ての関数をexport
-compile(export_all).
レコードの宣言
-record(item{
id,
name,
cost,
}).
詳しくは「レコード」の節を参照願います。
バージョンの宣言
-vsn(Version).
拡張子が「.hrl」のファイルはインクルード(内部に情報を取り込むこと)することが可能です。
これを使うことによって属性を取り込んだりすることが可能です。
ファイルをインクルード
rr("ファイル名").
レコードの節にサンプルを掲載しています。