Sto cercando di sapere quali sono i moduli in Elixir. Perché in Erlang sono solo atomi, ma in elisir gli atomi iniziano con il carattere :
. Quindi Ho controllato queste espressioni in iex:Il modulo di Elixir è un atomo?
iex(16)> is_atom(List)
true
iex(17)> is_atom(:List)
true
iex(18)> List == :List
false
iex(19)> a = List
List
iex(20)> b = :List
:List
Quindi è abbastanza chiaro che sia List
e :List
sono atomi. Tuttavia, come funziona sul livello di interoperabilità di Erlang? Perché Erlang's ok
equivale a Elixir's :ok
.
Quindi quale di questi due (e :List
) è uguale a 'List'
in Erlang?
Ottima risposta! Per essere precisi al 100% nella denominazione, 'List',' String' in Elixir sono chiamati alias e si espandono in atomi. Quindi 'List' si espande a:" Elixir.List ". Tuttavia, puoi fare un alias puntare a quello che vuoi usando il form speciale alias, ad esempio: 'alias: foo, come: Lista'. –
@ JoséValim Come posso ottenere questo alias dalla stringa di? 'String.to_atom (" List ")' fornisce ': List'. Io uso '{atom, _} = Code.eval_string (" Elenco ")' Ma immagino che non sia il modo più sicuro per farlo –
Controlla 'Module.concat/2' e' Module.split/1'. –