2017-09-27 12 views

Antwort

3

Sie sind ähnlich, beide werden oft verwendet, um das Fehlen eines Wertes zu bezeichnen. In JavaScript wird !!null zu false ausgewertet, während in Elixir !!nil zu false ausgewertet wird. Genau wie JavaScripts null, können Sie nil als „falsy“ Wert in einem Booleschen Kontext, zum Beispiel verwenden:

if nil do 
    IO.puts "foo" 
else 
    IO.puts "bar" 
end 

gedruckt wird „bar“

ich nicht viele Unterschiede zwischen den beiden denken kann , außer vielleicht ein paar Eckfällen. Zum Beispiel wertet null > 0 in JavaScript false aus, während nil > 0 in Elixir true auswertet.

+0

Die Tatsache, dass "nil> 0" in Elixir wahr ist, erinnerte mich an Wat talk: https://www.destroyallsoftsoftware.com/talks/wat :) –

+5

'nil' in Elixir ist ein Atom:' is_atom (nil) # ⇒ true'. (Eigentlich macht das "nil> 0" truthy.) – mudasobwa

+0

In Erlang ist es offensichtlich, dass 'true',' false' und 'nil' Atome sind, aber in Elixir ist es weniger offensichtlich (wie die Syntax ist anders), aber Sie kann es selbst testen über 'nil ==: nil # => true'. – Hauleth