この記事は「Elixir Advent Calendar 2022」13日目の記事です
東京にいるけどfukuokaexのYOSUKEです。
簡単 Elixirシリーズでは小ネタをサクッと書いていこう。というコンセプトで作っていきます。
今回は、useって何? を理解する 第2弾。という小ネタ(そう、この記事はサクッとがコンセプトW)
前回の記事はこちら 簡単Elixirシリーズ 〜useを理解しよう① 〜
今回は、サンプルコードを使って、再利用可能なコードを作成してみましょう。
まずは、再利用可能なコードを__using__
を利用して生成します。
次にquoteを使います。quoteはquote内で書かれた式を評価して返します。
quoteの中で関数を定義します。※ quoteについてはまた別で書きたいと思います。
defmodule Use.Example do
defmacro __using__(_) do
quote do
def hello(name), do: "hello #{name}"
end
end
end
これで、Use.Exampleの中で定義された hello("YOSUKE")
を use
を使って別の
モジュールで呼び出して利用できるようになります。
defmodule Yosuke do
use Use.Example
end
使ってみましょう。
iex(1)> Yosuke.hello("YOSUKE")
"hello YOSUKE"
ということで、use を利用して再利用可能なコードを定義する事ができました。
コードベースでテンプレート化したい時は便利ですね。
ただし、これは濫用するとコードの視認性が悪くなる危険もあるので、濫用は避けましょう。