Elixir的模块是原子吗?

Krz*_*nde 12 erlang elixir

我正在努力了解Elixir中的模块.因为在Erlang中他们只是原子,但在Elixir中,原子始于:人物.所以我在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
Run Code Online (Sandbox Code Playgroud)

所以,很明显,这两个List:List的原子.但是,它如何在Erlang互操作层上运行?因为Erlang ok等于Elixir的:ok.
那么这两个(List:List)中的哪一个'List'在Erlang中是相同的?

Ram*_*nir 17

Interactive Elixir (1.0.4) - press Ctrl+C to exit (type h() ENTER for help)
iex(1)> List == :List
false
iex(2)> List == :'Elixir.List'
true
Run Code Online (Sandbox Code Playgroud)

Elixir中的所有大写原子都自动接收Elixir.前缀.

  • 很棒的答案!为了在命名中100%精确,Elixir中的`List`,`String`被称为别名,它们扩展为原子.所以`List`扩展为:"Elixir.List".但是,您可以使用`alias`特殊形式为您想要的任何内容创建一个别名,例如:`alias:foo,as:List`. (8认同)
  • 检查`Module.concat/2`和`Module.split/1`. (3认同)