Я пытаюсь узнать, какие модули находятся в Эликсире. Потому что в Эрланге они всего лишь атомы, но в атомах Эликсира начинается с символа :
. Так я проверил эти выражения в IEX:Является ли модуль Эликсира атомом?
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
Так что это довольно ясно, что оба List
и :List
являются атомы. Однако как это работает на уровне взаимодействия Erlang? Потому что Erlang's ok
равен Elixir's :ok
.
Итак, какой из этих двух (List
и :List
) равен 'List'
в Erlang?
Отличный ответ! Чтобы быть на 100% точным в названии, 'List',' String' в Elixir называются псевдонимами, и они расширяются до атомов. Поэтому 'List' расширяется до:" Elixir.List ". Однако вы можете сделать псевдоним для того, что хотите, используя специальную форму 'alias', например:' alias: foo, as: List'. –
@ JoséValim Как я могу получить такой псевдоним из строки, чем? 'String.to_atom (« Список »)' дает ': List'. Я использую '{atom, _} = Code.eval_string (« Список »)' Но я думаю, что это не самый безопасный способ сделать это. –
Проверьте 'Module.concat/2' и' Module.split/1'. –