14
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?

More than 1 year has passed since last update.

ElixirAdvent Calendar 2022

Day 13

簡単Elixirシリーズ 〜useを理解しよう② 〜

Last updated at Posted at 2022-12-24

この記事は「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 を利用して再利用可能なコードを定義する事ができました。
コードベースでテンプレート化したい時は便利ですね。

ただし、これは濫用するとコードの視認性が悪くなる危険もあるので、濫用は避けましょう。

14
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
14
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?