サーチ…


備考

モジュール名

Elixirでは、 IOStringなどのモジュール名は、フードの下の原子に過ぎず、コンパイル時に:"Elixir.ModuleName"形式に変換されます。

iex(1)> is_atom(IO)
true
iex(2)> IO == :"Elixir.IO"
true

モジュールの関数またはマクロを一覧表示する

__info__/1関数は、以下のアトムのいずれかをとります。

  • :functions - パブリック関数のキーワードリストをそのアリティとともに返します
  • :macros - パブリックマクロのキーワードリストをそのアリティとともに返します

Kernelモジュールの機能を一覧表示するには:

iex> Kernel.__info__ :functions
[!=: 2, !==: 2, *: 2, +: 1, +: 2, ++: 2, -: 1, -: 2, --: 2, /: 2, <: 2, <=: 2,
 ==: 2, ===: 2, =~: 2, >: 2, >=: 2, abs: 1, apply: 2, apply: 3, binary_part: 3,
 bit_size: 1, byte_size: 1, div: 2, elem: 2, exit: 1, function_exported?: 3,
 get_and_update_in: 3, get_in: 2, hd: 1, inspect: 1, inspect: 2, is_atom: 1,
 is_binary: 1, is_bitstring: 1, is_boolean: 1, is_float: 1, is_function: 1,
 is_function: 2, is_integer: 1, is_list: 1, is_map: 1, is_number: 1, is_pid: 1,
 is_port: 1, is_reference: 1, is_tuple: 1, length: 1, macro_exported?: 3,
 make_ref: 0, ...]

Kernelをあなたが選んだモジュールに置き換えてください。

モジュールの使用

モジュールには、 aliasimportuse 、およびrequire他のモジュールで使用するための4つの関連キーワードがありrequire

aliasは異なる(通常はより短い)名前でモジュールを登録します:

defmodule MyModule do
  # Will make this module available as `CoolFunctions`
  alias MyOtherModule.CoolFunctions
  # Or you can specify the name to use
  alias MyOtherModule.CoolFunctions, as: CoolFuncs
end

importは、モジュール内のすべての関数を名前の前に使用可能にします。

defmodule MyModule do
  import Enum
  def do_things(some_list) do
    # No need for the `Enum.` prefix
    join(some_list, " ")
  end
end

useは、モジュールが現在のモジュールにコードを注入できるようにします。これは、通常、モジュールが何らかの動作を確認するための独自の関数を作成するフレームワークの一部として実行されます。

それらを使用できるようにモジュールからロードマクロをrequireする。

他のモジュールへの関数の委託

defdelegateを使用して、別のモジュールで定義された同じ名前の関数に委譲する関数を定義します。

defmodule Math do
  defdelegate pi, to: :math
end


iex> Math.pi
3.141592653589793


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow