In Ruby, nil
and false
are not the same:
nil
is a special value in Ruby that represents "nothingness" or "absence of a value", such as when a variable has not yet been assigned a value;false
is a boolean value that represents a negative or failed condition.
Although, nil
and false
are both considered "falsy" values (meaning that they evaluate to false
in a boolean context), still they are not the same thing.
For example, compare the two in a boolean context, where both evaluate to boolean false
:
my_obj = nil if my_obj puts "this will not be printed" else puts "this will be printed" end #=> "this will be printed"
my_obj = false if my_obj puts "this will not be printed" else puts "this will be printed" end #=> "this will be printed"
However, they're two distinct values that do not equal to each other:
puts nil.class.name #=> NilClass puts false.class.name #=> FalseClass puts false == nil #=> false
It is important to note that nil and false are not interchangeable. They have different meanings and uses, and should be used appropriately in different contexts.
This post was published (and was last revised ) by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.