Home > Enterprise >  Elegant way to tell if something is false?
Elegant way to tell if something is false?

Time:01-19

Seeing that .nil? is so useful and makes code so readable, I tried .false? and was surprised it didn't exist.

Question

What is the most elegant / preferred / self-documenting / idiomatic way to check if something is false in ruby, without using any user-defined methods?

Example

A possible use case replacing; the s.false? in this:

def false? 
  self == false
end

s ||= "hello" # is the same as

s = "hello" if (s.nil? || s.false?)

CodePudding user response:

Well, usually you just compare to false only if it is actually important whether the value is really false as in

if s == false
  do_something 
end

However, most of the time, people actually check for a value to be truthy or falsy as you often don't (need to) care for the strict difference between false or nil.

Here, you thus merely check whether a value is nil or false (that is: it's falsy) or if it is anything else (that is: it's truthy). This is encouraged by language idioms such as the checks done by if and unless as well as the common boolean operators such as || or &&.

do_something if s      # called if s is anything else but false or nil
do_something unless s  # called if s is either false or nil

Especially when accepting / expecting boolean values, a nil value is often handled as if it were false because of these Ruby language idioms.

CodePudding user response:

What is the most elegant / preferred / self-documenting / idiomatic way to check if something is false in ruby, without using any user-defined methods?

I think s == false is your answer plain and simple.

  •  Tags:  
  • Related