> There's the RTEST macro.
Yes, but as Shugo points out in another response to my question, RTEST
returns "true" for some cases that I wouldn't expect it to (namely, an
integer value of zero). But that's OK, that's the documented behavior for
RTEST. I'm probably stuck in a Python mindset where the rules are a little
different; I wrote a quick Ruby script to try a few tests:
# Check the trueness of various objects in Ruby
def test_veracity(obj)
if obj
puts("#{obj.type} with value [#{obj}] is true.")
else
puts("#{obj.type} with value [#{obj}] is false.")
end
end
# Let's try a few examples
test_veracity(true)
test_veracity(false)
test_veracity(nil)
test_veracity(0)
test_veracity(1)
test_veracity(0.0)
test_veracity(1.0)
test_veracity("")
test_veracity("anything")
For this test, only the "nil" and "false" cases come back negative;
everything else registers as true. I sort-of expected the "0", "0.0" and
empty string cases to also come back false. It's not a bug or anything, just
something I need to get used to!