Suche…


Bemerkungen

Modulnamen

In Elixir sind :"Elixir.ModuleName" wie IO oder String nur Atome unter der Haube und werden zur Kompilierungszeit in die Form :"Elixir.ModuleName" konvertiert.

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

Listen Sie die Funktionen oder Makros eines Moduls auf

Die Funktion __info__/1 hat eines der folgenden Atome:

  • :functions - Gibt eine Liste der Schlüsselwörter öffentlicher Funktionen mit ihren Aritäten zurück
  • :macros - Gibt eine Liste der Schlüsselwörter öffentlicher Makros mit ihren Eigenschaften zurück

So listen Sie die Funktionen des Kernel Moduls auf:

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, ...]

Ersetzen Sie den Kernel durch ein beliebiges Modul Ihrer Wahl.

Verwendung von Modulen

Für Module stehen vier Schlüsselwörter zur Verfügung, um sie in anderen Modulen verwenden zu können: alias , import , use und require .

alias registriert ein Modul unter einem anderen (normalerweise kürzeren) Namen:

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 werden alle Funktionen des Moduls ohne Namen vor ihnen zur Verfügung gestellt:

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

use kann ein Modul Code in das aktuelle Modul einfügen. Dies geschieht normalerweise als Teil eines Frameworks, das seine eigenen Funktionen erstellt, um Ihr Modul dazu zu bringen, ein bestimmtes Verhalten zu bestätigen.

require Lademakros vom Modul, damit sie verwendet werden können.

Delegieren von Funktionen an ein anderes Modul

Verwenden Sie defdelegate , um Funktionen zu definieren, die an Funktionen mit demselben Namen delegieren, die in einem anderen Modul definiert sind:

defmodule Math do
  defdelegate pi, to: :math
end


iex> Math.pi
3.141592653589793


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow