2017-11-11 160 views
-2

Elixir中的None和nil有什么区别?Elixir中的None和零

如果我理解正确,从Elixir的文档中可以看出,nil是一个代表缺失值的文字。

但即使没有似乎相同,虽然我找不到任何文件。

+3

Elixir没有无 – JustMichael

回答

3

正如@JustMichael提到的,None表现得和你想像的一样。 None在elixir中只是一个没有任何其他含义的原子,因为您可以通过iex中的i(variable)来确定。

iex(1)> i(None) 
Term 
    None 
Data type 
    Atom 
Raw representation 
    :"Elixir.None" 
Reference modules 
    Atom 
Implemented protocols 
    IEx.Info, Inspect, String.Chars, List.Chars 
iex(2)> is_nil(None) 
false 

但看nil

iex(3)> i(nil) 
Term 
    nil 
Data type 
    Atom 
Reference modules 
    Atom 
Implemented protocols 
    IEx.Info, Inspect, String.Chars, List.Chars 
iex(4)> is_nil(nil) 
true 
0

None是一个模块名称,一个原子,不计算在控制流错误。
nil是在控制流程中评估为错误的原子。

iex(1)> if None, do: :ok, else: :ko 
:ok 
iex(2)> if nil, do: :ok, else: :ko 
:ko