There is a reason to evaluate, say, 0 to true.

For example, consider a function returning an index in an array where
you can find an object.

  arr = ['a', 'b', 'c', 'd']
  puts arr.index('c') #=> 2
  puts arr.index('a') #=> 0

What should it return if there is no such object in array? A
reasonable expectation is that it should return false or nothing (nil)
- and that's what it does on Ruby. However, for example in JavaScript,
false is that same as 0, and thus you wouldn't know if it found the
value of not.

JavaScript solves this by returning -1 in such case, which is IMO a
terrible hack (function is arr.indexOf). PHP returns false/null and
expects you to compare the results using strict comparison operator,
=== (function called array_search), meaning you can't just stuf it in
an if().

Of course, Ruby way can be awkward at times (when you need to, say,
make sure you have a string that that it's not empty), but IMO it's
still much cleaner.

-- Matma Rex