Ruby Language

Truthiness

Remarks#

As a rule of thumb, avoid using double-negations in code. Rubocop says that double negations are unnecessarily complex and can often be replaced with something more readable.

Instead of writing

def user_exists?
    !!user
end

use

def user_exists?
    !user.nil?
end

All objects may be converted to booleans in Ruby

Use the double negation syntax to check for truthiness of values. All values correspond to a boolean, irrespective of their type.

irb(main):001:0> !!1234
=> true
irb(main):002:0> !!"Hello, world!"
(irb):2: warning: string literal in condition
=> true
irb(main):003:0> !!true
=> true
irb(main):005:0> !!{a:'b'}
=> true

All values except nil and false are truthy.

irb(main):006:0> !!nil
=> false
irb(main):007:0> !!false
=> false

Truthiness of a value can be used in if-else constructs

You do not need to use double negation in if-else statements.

if 'hello'
    puts 'hey!'
else
    puts 'bye!'
end

The above code prints ‘hey!’ on the screen.


This modified text is an extract of the original Stack Overflow Documentation created by the contributors and released under CC BY-SA 3.0 This website is not affiliated with Stack Overflow