Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Ruby > Binary Logic, Bug or Feature?

Reply
Thread Tools

Binary Logic, Bug or Feature?

 
 
Malcolm Lockyer
Guest
Posts: n/a
 
      11-28-2007
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
>> x

=> true

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

>> x = true and false

=> false
>> x

=> 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.

 
Reply With Quote
 
 
 
 
Malcolm Lockyer
Guest
Posts: n/a
 
      11-28-2007
On Nov 28, 2007 5:37 PM, Yukihiro Matsumoto <(E-Mail Removed)> wrote:
>
> 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.

 
Reply With Quote
 
 
 
 
yermej
Guest
Posts: n/a
 
      11-28-2007
On Nov 27, 10:43 pm, Christian <(E-Mail Removed)> wrote:
> 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
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
(8-bit binary to two digit bcd) or (8-bit binary to two digit seven segment) Fangs VHDL 3 10-26-2008 06:41 AM
writing binary file (ios::binary) Ron Eggler C++ 9 04-28-2008 08:20 AM
A 64-bit binary returning a value to a 32-bit binary? spammenotplui31@yahoo.ca C Programming 12 04-08-2007 07:02 AM
*bug* *bug* *bug* David Raleigh Arnold Firefox 12 04-02-2007 03:13 AM
Re: ostreams, ios::binary, endian, mixed binary-ascii Marc Schellens C++ 8 07-15-2003 12:27 PM



Advertisments