はじめに
モジュールと名前付き関数について理解を深める。
一般的な言語の取り扱いと大差はないが独特の表現方法とiexでの実行時の挙動を紹介する。
実践
名前付き関数を含むファイルの作成を行う
touch times.exs
でファイルを生成する。
次に
vim times.exs
でファイルを編集し以下のコードを記述する。
defmodule Times do
def double(n) do
n * 2
end
end
この時点でモジュール名Timesでdoubleという関数が1つある状態となった。
なおここでのdoubleは引数を1つ取っている。
この場合elixirではdouble/1という表現をする。
この状態でiexを実行する。
なお実行方法はiex実行時にファイル名を含む場合と後からファイルを読み込ませる場合がある。
実行時はモジュール名+関数名で実行をする。
iex実行時にファイル名を含める
iex times.exs
Erlang/OTP 27 [erts-15.1.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Interactive Elixir (1.17.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> Times.double(4)
8
iex実行後にファイルを読み込ませる
iex
Erlang/OTP 27 [erts-15.1.2] [source] [64-bit] [smp:16:16] [ds:16:16:10] [async-threads:1] [jit:ns]
Interactive Elixir (1.17.3) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> c "times.exs"
[Times]
iex(2)> Times.double(4)
8
なおこの際に読み込ませるcのことをcヘルパーと呼ぶ。
cヘルパーを使ってファイルのコンパイルを行っている。
終わりに
cヘルパーを使って後から読みこませる方法は知らなかったので勉強になった。
ただなぜelixirのファイルをコンパイルするのにcヘルパーを使うのかが腑に落ちない。
判明した段階で追記を行う。
参考文献 プログラミングElixir 第2版