Outside of any programming language, an abstract boolean has only two
values: true, and false.
Many programming languages map true to non-zero and false to zero, but
that isn’t necessary a given. Return values for commands in a shell are
the opposite, 0 is true, anything non-zero is false. Even in languages
like C, technically 0 means true and non-zero means false, but it’s
semantically exactly the opposite for 99.9% of all standard functions,
which return 0 for true, and non-zero for false.
Some languages, like Python or Perl, have a big list of what is false,
and everything else is true. Sometimes it’s hard to know what is going
to be true or false in those languages unless you are very familiar
with the nuances.
In digital logic design, often 0 means false, and 1 means true. Except
if you’re talking about shared bus architectures, then almost always 0
means true, 0 means false.
While it works for certain domains, it’s probably not a good idea in
general to assume that integers map have any intrinsic mapping to
booleans: it’s always a characteristic of the language or problem
domain in question.
In ruby, it’s very simple and straightforward. Only two things are
logically false: nil, and false. There isn’t any “conversion” going on,
it’s an intrinsic part of the language. There is no “Boolean” data type
that things are being “converted” to; everything is true, except
nil and false.
···
On Saturday 13 December 2003 8:37 am, KONTRA Gergely wrote:
On 1213, Austin Ziegler wrote:
On Sat, 13 Dec 2003 01:56:18 +0900, KONTRA Gergely wrote:
Why ruby handle booleans so liberally?
It doesn’t. Ruby treats all values excepting false and nil as true.
It sounds like you’re wanting 0 to be treated as false.
No, I’m just asking how ruby “dare” to convert my 0 to true (or
false, it is the same).
–
Wesley J. Landaker - wjl@icecavern.net
OpenPGP FP: 4135 2A3B 4726 ACC5 9094 0097 F0A9 8A4C 4CD6 E3D2