Elixir Language
moduler
Sök…
Anmärkningar
Modulnamn
I Elixir är modulnamn som IO
eller String
bara atomer under huven och konverteras till formen :"Elixir.ModuleName"
vid sammanställningstiden.
iex(1)> is_atom(IO)
true
iex(2)> IO == :"Elixir.IO"
true
Lista en moduls funktioner eller makron
__info__/1
tar ett av följande atomer:
-
:functions
- Returnerar en nyckelordslista med offentliga funktioner tillsammans med deras arity -
:macros
- Returnerar en nyckelordslista med offentliga makron tillsammans med deras arities
För att lista Kernel
modulens funktioner:
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, ...]
Byt ut Kernel
med valfri modul.
Med hjälp av moduler
Moduler har fyra associerade nyckelord för att använda dem i andra moduler: alias
, import
, use
och require
.
alias
registrerar en modul under ett annat (vanligtvis kortare) namn:
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
kommer att göra alla funktioner i modulen tillgängliga utan namn framför dem:
defmodule MyModule do
import Enum
def do_things(some_list) do
# No need for the `Enum.` prefix
join(some_list, " ")
end
end
use
tillåter en modul att injicera kod i den aktuella modulen - detta görs vanligtvis som en del av ett ramverk som skapar egna funktioner för att din modul ska bekräfta vissa beteenden.
require
laster makron från modulen så att de kan användas.
Delegera funktioner till en annan modul
Använd defdelegate
att definiera funktioner som delegerar till funktioner med samma namn som definieras i en annan modul:
defmodule Math do
defdelegate pi, to: :math
end
iex> Math.pi
3.141592653589793