types? casting and bools

K

KONTRA Gergely

Hi!

Recently I ran into the problem:

Why ruby handle booleans so liberally?
I mean why can I pass anything to an if, and for constructs requiring
bool? I guess many programmers do it the wrong way saying "if 0" and
expecting to be true...

And on the other hand I must use to_i and others to convert from one
type to another.

Gergo
 
K

KONTRA Gergely

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).
Everyone can write his/her own to_bool method INLINE. Shouldn't be a big
deal, but it can avoid some gotchas...

So in my philosophy, if 0 should raise a typeerror

So you are forced to write if 0!=0

(of course a=0;if a -> a=0; if a!=0 )

Do you think it's the camel's face?

Gergo
 
W

Wesley J Landaker

--Boundary-02=_mYz2/ItsBsWPhUS
Content-Type: text/plain;
charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Description: signed data
Content-Disposition: inline

No, I'm just asking how ruby "dare" to convert my 0 to true (or
false, it is the same).

Outside of any programming language, an abstract boolean has only two=20
values: true, and false.=20

Many programming languages map true to non-zero and false to zero, but=20
that isn't necessary a given. Return values for commands in a shell are=20
the opposite, 0 is true, anything non-zero is false. Even in languages=20
like C, technically 0 means true and non-zero means false, but it's=20
semantically exactly the opposite for 99.9% of all standard functions,=20
which return 0 for true, and non-zero for false.

Some languages, like Python or Perl, have a big list of what is false,=20
and everything else is true. Sometimes it's hard to know what is going=20
to be true or false in those languages unless you are very familiar=20
with the nuances.

In digital logic design, often 0 means false, and 1 means true. Except=20
if you're talking about shared bus architectures, then almost always 0=20
means true, 0 means false.

While it works for certain domains, it's probably not a good idea in=20
general to assume that integers map have any intrinsic mapping to=20
booleans: it's always a characteristic of the language or problem=20
domain in question.

In ruby, it's very simple and straightforward. Only two things are=20
logically false: nil, and false. There isn't any "conversion" going on,=20
it's an intrinsic part of the language. There is no "Boolean" data type=20
that things are being "converted" to; *everything* is true, *except*=20
nil and false.=20

=2D-=20
Wesley J. Landaker - (e-mail address removed)
OpenPGP FP: 4135 2A3B 4726 ACC5 9094 0097 F0A9 8A4C 4CD6 E3D2


--Boundary-02=_mYz2/ItsBsWPhUS
Content-Type: application/pgp-signature
Content-Description: signature

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)

iD8DBQA/2zYm8KmKTEzW49IRAtBYAJwMvW0or5Rx55WRq+U7BmSNPHRkTwCfWtM2
EB+5QK32/TT9jP/t3v2lab4=
=zJ1E
-----END PGP SIGNATURE-----

--Boundary-02=_mYz2/ItsBsWPhUS--
 
K

KONTRA Gergely

On 1214, Wesley J Landaker wrote:
Content-Description: signed data
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.
This is simple, but I think you must consider the above not to allow
everything to be boolean.
The time is NOW to change things (before 2.0)...

So in Rite will it be the same, or will the simplest class (boolean)
finally have its own class?

Gergo
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,904
Latest member
HealthyVisionsCBDPrice

Latest Threads

Top