2016-08-09 39 views
1

Ziemlich einfache Frage, habe ich es notiert, wenn auf exfile Bibliothek gearbeitet.Warum is_atom (nil) im Elixier wahr ist?

Dieser Ausdruck gibt:

is_atom(nil) # => true 

Es ist irgendwie unberechenbar. Meine Frage ist: Wie ist es passiert? Warum gibt es true zurück?

Antwort

6

nil ist ein Atom, zusammen mit true und false.

Dies ist für true und false in http://elixir-lang.org/getting-started/basic-types.html#atoms

dokumentiert können Sie auch mit überprüfen:

nil == :nil 
true == :true 
false == :false 

einigen relevanten Links:

https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/src/elixir_tokenizer.erl#L986 https://github.com/elixir-lang/elixir/blob/v1.3.2/lib/elixir/src/elixir_parser.yrl#L253

+0

Hm, irgendwie seltsame Lösung. Aber mein Name ist kein Jose Valim. Warum hat er es getan, wie denkst du? – asiniy

+0

Ich bin mir nicht sicher, "wahre" und "falsche" sind Atome in Erlang, also ist das ein wahrscheinlicher Einfluss http://erlang.org/doc/reference_manual/data_types.html#id76595. Es wurde in diesem Commit hinzugefügt https://github.com/elixir-lang/elixir/commit/0054df323420def2797152f16845798d4846b634 – Gazler

+0

Super! Vielen Dank! – asiniy

0

Nun, es liegt daran, "Null" ist ein Atom, genau wie "wahr" oder falsch".