口で言うより行うことがErlang習得への近道と信じています。
モジュールとは
Erlangのコードはモジュールに分割されています。モジュールは属性と関数の宣言の列で構成されます。属性も関数も最後にピリオド(.
)を打ち終端を示します。
モジュールには関数を1つのファイルにまとめる役割があります。
モジュールで定義された関数は、Module:Function(Arguments)
という形で呼び出します。
例としてioモジュールのformat/2関数を呼び出してみます。
> io:format("~ts~n", ["闘魂"]).
闘魂
ok
モジュールの作り方
-
.erl
ファイルを作る -
.erl
ファイルの中でmodule
属性にモジュール名をアトムで指定 -
.erl
ファイルの中でexport
属性にエクスポートしたい関数を明示 -
.erl
ファイルの中で関数を定義
モジュール名は.erl
ファイルの名前と一致している必要があります。
%% モジュール名を指定
-module(toukon).
%% このモジュールからエクスポートしたい関数を明示
-export([aisatsu/0, setsumei/0]).
%% 関数を定義
aisatsu() ->
io:put_chars(["元気ですかーーーーッ!", $\n]).
setsumei() ->
io:put_chars(["「闘魂」とは己に打ち克ち、闘いを通じて自分の魂を磨くことである", $\n]).
試しに上述のモジュールを実際に作ってみます。
OSのシェルを開きます。
# 遊び用に一時ディレクトリを作成
$ mkdir tmp
# 一時ディレクトリの中に入る
$ cd tmp
# toukon.erlファイルを作ってtoukonモジュールを定義
$ cat <<EOF > ./toukon.erl
-module(toukon).
-export([aisatsu/0, setsumei/0]).
aisatsu() ->
io:put_chars(["元気ですかーーーーッ!", $\n]).
setsumei() ->
io:put_chars(["「闘魂」とは己に打ち克ち、闘いを通じて自分の魂を磨くことである", $\n]).
EOF
# toukon.erlファイルをコンパイル
$ erlc toukon.erl
# toukon.beamファイルが生成されたことを確認
$ ls
toukon.beam toukon.erl
Erlangシェルを開きます。
$ erl
Erlang/OTP 25 [erts-13.1.3] [source] [64-bit] [smp:10:10] [ds:10:10:10] [async-threads:1] [jit] [dtrace]
Eshell V13.1.3 (abort with ^G)
1> toukon:setsumei().
「闘魂」とは己に打ち克ち、闘いを通じて自分の魂を磨くことである
ok
2> toukon:aisatsu().
元気ですかーーーーッ!
ok
自作モジュールの関数がイゴきました 1
Elixirにも挑戦したい
闘魂ElixirシリーズとElixir Schoolがオススメです。