Why Treat 0 as True in Ruby?

I'm guessing that Matz wanted conceptual simplicity of "truthiness" as such - the only "false" values are false and nil. Period.

Using just false would be the cleanest but there is understandable need for including nil. To include the integer zero as a special case might open the mental floodgates of questioning truthiness of other types. What about strings, is "" false? And arrays, is [] false? And hashes, is {} false? Ad insanitum (see JavaScript)...


In Common Lisp, 0 is also treated as true. For example, the following code returns true.

(if 0 'true 'false)

No doubt, Ruby is following the same design decision made in Lisp. In Lisp, only an empty list (represented by nil) is false.


In ruby, if exists, it's true. If not, it's false.

so, with Ruby null(no address assigned) and false are only false.

All others are true because it has address assigned to it.

I think of this way; "Does it exist?"