Ich versuche zu erfahren, welche Module in Elixir sind. Denn in Erlang sind sie nur Atome, aber in Elixir-Atomen beginnen mit :
Zeichen. Also habe ich diese Ausdrücke in iex geprüft:Ist das Elixir-Modul ein Atom?
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
es ist also ziemlich klar, dass beide List
und :List
sind Atome. Wie funktioniert es jedoch auf Erlang Interop-Layer? Denn Erlangs ok
entspricht Elixirs :ok
.
Also welche der beiden (List
und :List
) ist gleich 'List'
in Erlang?
Große Antwort! Um in der Benennung 100% genau zu sein, werden 'List',' String' in Elixir Aliase genannt und sie erweitern sich zu Atomen. Also 'List' expandiert zu:" Elixir.List ". Sie können jedoch mit dem speziellen Formular "Alias" einen Alias-Punkt auf das gewünschte Objekt setzen, zum Beispiel: 'alias: foo, as: List'. –
@ JoséValim Wie kann ich einen solchen Alias von String erreichen? 'String.to_atom (" Liste ")' gibt ': Liste'. Ich verwende '{atom, _} = Code.eval_string (" Liste ")' Aber ich stelle mir vor, es ist nicht der sicherste Weg, es zu tun –
Überprüfen Sie 'Module.concat/2' und' Module.split/1'. –