Elixir Language
Modules
Recherche…
Remarques
Noms de module
Dans Elixir, les noms de module tels que IO
ou String
sont que des atomes sous le capot et sont convertis au :"Elixir.ModuleName"
au moment de la compilation.
iex(1)> is_atom(IO)
true
iex(2)> IO == :"Elixir.IO"
true
Liste des fonctions ou des macros d'un module
La fonction __info__/1
prend l'un des atomes suivants:
-
:functions
- Retourne une liste de mots clés des fonctions publiques avec leurs arités -
:macros
- Retourne une liste de mots clés de macros publiques avec leurs arités
Pour lister les fonctions du module 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, ...]
Remplacez le Kernel
par n'importe quel module de votre choix.
Utiliser des modules
Les modules ont quatre mots-clés associés pour les utiliser dans d'autres modules: alias
, import
, use
et require
.
alias
enregistrera un module sous un nom différent (généralement plus court):
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
rend toutes les fonctions du module disponibles sans nom devant elles:
defmodule MyModule do
import Enum
def do_things(some_list) do
# No need for the `Enum.` prefix
join(some_list, " ")
end
end
use
permet à un module d'injecter du code dans le module actuel - cela se fait généralement dans le cadre d'une structure qui crée ses propres fonctions pour que votre module confirme son comportement.
require
des macros de chargement du module pour pouvoir les utiliser.
Déléguer des fonctions à un autre module
Utilisez defdelegate
pour définir des fonctions qui délèguent aux fonctions du même nom définies dans un autre module:
defmodule Math do
defdelegate pi, to: :math
end
iex> Math.pi
3.141592653589793