Binary Logic, Bug or Feature?

M

Malcolm Lockyer

Hi Guys,


I have been pulling my hair out for the last 20 minutes trying to find
out what is wrong in my app that has some pretty basic binary logic.
Here is a concise example in an irb session that shows my problem
(certainly, what I was working on wasn't nearly as simple the sides of
AND were variables etc.):

?> x = true and true
=> true=> true

(this is what I expect, true and true = true)
=> true

But what I've got here is "true and false" == false, but it assigns
true to x. So true and false == false, but really == true... Have I
lost my mind, should it do this? Does it do it for anyone else? It
seems weird to me since the first example does what I expect, but the
second doesn't...

So now I'm reduced to doing something like:
if (true and false) then x = true else x = false end
which is kind of annoying, and not very ruby-esque IMO.

Any advice appreciated!

$ ruby -v
ruby 1.8.5 (2006-08-25) [i486-linux]

OS is Ubuntu 7.04.

(I know, old ruby ver - its just the stock ubuntu one)


THANKS!
- Malcolm.
 
M

Malcolm Lockyer

Precedence.

x = true and false

is parsed as

(x = true) and false

not

x = (true and false)

matz.

Of course, that makes perfect sense - I guess I am still getting used to
Ruby's awesome level of flexibility!

Thanks a lot for the quick reply matz, btw - big fan of your work :).


Also, thanks Christian - I will make use of the && in the future!


Thanks,
Malcolm.
 
Y

yermej

It should work if you use && instead of and. Not sure why that is, but
I'm experencing the same thing as you when doing x = true and false,
but it works as expected when using x = true && false.

This also happens in Perl and maybe other similar languages. The
English versions of the logical operators (and, or, not) have lower
precedence than the symbolic versions (&&, ||, !). Why? I don't know -
the languages were just designed that way.

Jeremy
 

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,766
Messages
2,569,569
Members
45,043
Latest member
CannalabsCBDReview

Latest Threads

Top