2017-11-11 81 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