2017-11-11 6 views
-2

엘릭서에서 None과 nil의 차이점은 무엇입니까?없음 엘릭서에서 nil 대

필자가 올바르게 이해했다면 Elixir의 문서에서 nil은 값의 부재를 나타내는 리터럴입니다.

하지만 아무 문서도 찾을 수는 없지만 같은 것을 나타내는 것으로 보입니다.

+3

엘 릭셔에는 없음이 없습니다. – JustMichael

답변

3

@JustMichael이 언급했듯이 None은 생각하는 것처럼 행동하지 않습니다. 의 엘릭서는 iex의 i(variable)을 통해 확인할 수 있으므로 더 이상 의미가없는 원자입니다. nil에서

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 

하지만 찾고 :

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은 제어 흐름에서 거짓으로 평가되는 원자입니다.

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