7.5. Boolean states, Boolean objects, and nil
Every expression in Ruby evaluates to an object, and every object has a Boolean value of either true or false. Furthermore, true and false are objects. This idea isn’t as convoluted as it sounds. If true and false weren’t objects, then a pure Boolean expression like
100 > 80
would have no object to evaluate to. (And > is a method and therefore has to return an object.)
In many cases where you want to get at a truth/falsehood value, such as an if statement or a comparison between two numbers, you don’t have to manipulate these special objects directly. In such situations, you can think of truth and falsehood as states, rather than objects.
We’ll look at true and false both as states and as special ...