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


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow