Elixir中None
和nil
之间的区别是什么?
如果我理解正确,请参阅Elixir的文档nil
是一个代表缺乏价值的文字。
但即使None
似乎代表相同,但我找不到任何文件。
答案 0 :(得分:3)
正如@JustMichael所说,None
表现得与你想象的完全不同。
灵长类动物中的None
只是一个没有任何进一步含义的原子,因为你可以通过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
答案 1 :(得分:0)
None
是一个模块名称,一个原子,在控制流程中不会被评估为假。
nil
是一个在控制流中评估为false的原子。
iex(1)> if None, do: :ok, else: :ko
:ok
iex(2)> if nil, do: :ok, else: :ko
:ko