2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

モジュールと名前付き関数

Last updated at Posted at 2024-12-29

はじめに

モジュールと名前付き関数について理解を深める。
一般的な言語の取り扱いと大差はないが独特の表現方法と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版

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?