Buscar..


Observaciones

Nombres de módulos

En Elixir, los nombres de módulos como IO o String son solo átomos debajo del capó y se convierten a la forma :"Elixir.ModuleName" en el momento de la compilación.

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

Listar las funciones o macros de un módulo.

La función __info__/1 toma uno de los siguientes átomos:

  • :functions - Devuelve una lista de palabras clave de funciones públicas junto con sus aridades
  • :macros - Devuelve una lista de palabras clave de macros públicas junto con sus aridades

Para enumerar las funciones del módulo 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, ...]

Reemplace el Kernel con cualquier módulo de su elección.

Utilizando modulos

Los módulos tienen cuatro palabras clave asociadas para usarlos en otros módulos: alias , import , use y require .

alias registrará un módulo con un nombre diferente (generalmente más corto):

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 hará que todas las funciones en el módulo estén disponibles sin nombre delante de ellas:

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

use permite a un módulo inyectar código en el módulo actual; esto generalmente se realiza como parte de un marco que crea sus propias funciones para que su módulo confirme algún comportamiento.

require cargar macros desde el módulo para que puedan ser utilizadas.

Delegar funciones a otro módulo.

Utilice defdelegate para definir funciones que delegan funciones del mismo nombre definidas en otro módulo:

defmodule Math do
  defdelegate pi, to: :math
end


iex> Math.pi
3.141592653589793


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow