Elixir Language
Module
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