Ricerca…


Osservazioni

Nomi dei moduli

In Elixir, i nomi di moduli come IO o String sono solo atomi sotto il cofano e vengono convertiti nel modulo :"Elixir.ModuleName" in fase di compilazione.

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

Elenca le funzioni o i macro di un modulo

La funzione __info__/1 accetta uno dei seguenti atomi:

  • :functions - Restituisce un elenco di parole chiave di funzioni pubbliche insieme alle loro entità
  • :macros - Restituisce un elenco di parole chiave di macro pubbliche insieme alle loro entità

Per elencare le funzioni del modulo 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, ...]

Sostituisci il Kernel con qualsiasi modulo di tua scelta.

Utilizzando i moduli

I moduli hanno quattro parole chiave associate da utilizzare in altri moduli: alias , import , use e require .

alias registrerà un modulo con un nome diverso (solitamente più breve):

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 renderà tutte le funzioni del modulo disponibili senza nome davanti a loro:

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

use consente a un modulo di iniettare codice nel modulo corrente - questo in genere viene fatto come parte di un framework che crea le proprie funzioni per fare in modo che il modulo confermi un comportamento.

require carichi macro dal modulo in modo che possano essere utilizzati.

Delega di funzioni a un altro modulo

Utilizzare defdelegate per definire le funzioni che delegano a funzioni con lo stesso nome definite in un altro modulo:

defmodule Math do
  defdelegate pi, to: :math
end


iex> Math.pi
3.141592653589793


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow