2017-11-11 4 views
-2

エリクサーではNoneとnilの違いは何ですか?なしエリクシルではnil対

私が正しく理解している場合、Elixirのドキュメントからは、価値のないことを表すリテラルです。

でも、私はそれ以上のドキュメントを見つけることはできませんでしたが、誰も同じを表すようです。

+3

エリクシールには何もありません – JustMichael

答えて

3

@ジャストマイケルが述べたように、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 
0

Noneは、制御フローをfalseに評価されないモジュール名、原子、です。
nilは、制御フローでfalseと評価される原子です。

iex(1)> if None, do: :ok, else: :ko 
:ok 
iex(2)> if nil, do: :ok, else: :ko 
:ko 
関連する問題