モジュールのアトリビュート

cf. 14 モジュールのアトリビュート – Module attributes – Elixir

Elixir では、モジュールのアトリビュートは3つの目的に使われる。

  1. モジュールは注釈をつける
  2. 定数として利用
  3. コンパイルの際にモジュールの一時的な保管場所として利用

注釈

最もよく使われるのは2つ。これだけは覚えておこう。

  • @moduledoc – モジュールのドキュメント
  • @doc – このしるしの次にある関数やマクロのドキュメント

例えば、前に作った Math モジュールにドキュメントを追加してみよう。

defmodule Math do

  @moduledoc """
Provides math-related functions.

## Example

iex> Math.sum(1, 2)
3

"""

  @doc """
Calculates the sum of two numbers.
"""
  def sum(a, b) do
    a + b
  end

end

これをコンパイルしてから iex を立ち上げると、モジュールが読み込まれ(カレントディレクトリにあるコンパイル済みファイルは自動的に読み込まれるのを思い出すこと)、ドキュメントを見ることができる。

^o^ > elixirc math.ex

^o^ > iex
Eshell V8.0  (abort with ^G)
Interactive Elixir (1.3.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> h Math
* Math

Provides math-related functions.

## Example

  iex> Math.sum(1, 2)
  3


iex(2)> h Math.sum
* def sum(a, b)

Calculates the sum of two numbers.

定数

Elixir ではしばしばアトリビュートを定数のように使う。

defmodule MyServer do

  @initial_state %{host: "127.0.0.1", port: 3456}

  IO.inspect @initial_state

end
^o^ > elixir myserver.exs
%{host: "127.0.0.1", port: 3456}

アトリビュートは関数の中でも読める。

defmodule MyServer do

  @my_data 14

  def first_data, do: @my_data

  @my_data 13

  def second_data, do: @my_data

end

IO.puts MyServer.first_data
IO.puts MyServer.second_data
^o^ > elixir myserver2.exs
14
13

一時的な貯蔵

なんか難しそうなので、パス。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください