3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

口で言うより行うことがErlang習得への近道と信じています。

モジュールとは

Erlangのコードはモジュールに分割されています。モジュールは属性と関数の宣言の列で構成されます。属性も関数も最後にピリオド(.)を打ち終端を示します。

モジュールには関数を1つのファイルにまとめる役割があります。

モジュールで定義された関数は、Module:Function(Arguments) という形で呼び出します。

例としてioモジュールのformat/2関数を呼び出してみます。

> io:format("~ts~n", ["闘魂"]).
闘魂
ok

モジュールの作り方

  1. .erlファイルを作る
  2. .erlファイルの中でmodule属性にモジュール名をアトムで指定
  3. .erlファイルの中でexport属性にエクスポートしたい関数を明示
  4. .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 :tada:

Elixirにも挑戦したい

闘魂ElixirシリーズとElixir Schoolがオススメです。

  1. https://qiita.com/torifukukaiou/items/21df3c512308832c4a15#-%E3%82%A4%E3%82%B4%E3%81%8B%E3%81%99

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?