How to Convert a Boolean to an Integer in Ruby?

In Ruby, you can convert a boolean to an integer in either of the following ways:

Using Conditionals

You can employ various conditionals such as the ternary operator, if/else, or case statements to determine whether a value is true or false, and then return 1 or 0 accordingly.

For example:

def bool_to_int(bool)
    return bool ? 1 : 0
end

puts bool_to_int(true) #=> 1
puts bool_to_int(false) #=> 0

Using Short-Circuit Evaluation

You can leverage short-circuit logical operators (&& and ||) for boolean-to-integer conversion. This method capitalizes on the behavior of short-circuit evaluation in Ruby, where the expression stops being evaluated as soon as the final result is determined. For example, if the first part of an && expression is false, there's no need to evaluate the rest since the result will always be false.

Therefore, you can use the following expression to convert boolean to integer:

def bool_to_int(bool)
    return bool && 1 || 0
end

puts bool_to_int(true) #=> 1
puts bool_to_int(false) #=> 0

The short-circuit evaluation works like this:

  1. false && (anything) is short-circuit evaluated to false;
  2. true || (anything) is short-circuit evaluated to true.

Hence, the expression bool && 1 || 0 evaluates as follows:

true && 1 || 0 #=> 1
false && 1 || 0 #=> 0

This approach provides a concise way to convert true to 1 and false to 0.


This post was published 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.