N
Nicolas Lehuen
Hi,
I've just lost a few hours on this strange behaviour (bug ?).
Apparently it is caused by some kind of operator precedence
thingamagic. My original code was of course much more complicated, so
finding the problem wasn't easy (I first thought my code was
buggy...). Here is a piece of minimal code that reproduces the
problem :
8<-------------8<-------------8<-------------8<-------------
C:\temp>ver
Microsoft Windows [version 6.0.6000]
C:\temp>ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
C:\temp>type bug.rb
sum1 = 1 + 1 + 1
puts sum1
sum2 = (
1
+ 1
+ 1
)
puts sum2
C:\temp>ruby bug.rb
3
1
8<-------------8<-------------8<-------------8<-------------
what this code means to Ruby, if it's not "give me the result of 1 + 1
+ 1".
The same takes place in irb :
C:\temp>irb
irb(main):001:0> sum1 = 1 + 1 + 1
=> 3
irb(main):002:0> sum2 = (
irb(main):003:1* 1
irb(main):004:1> + 1
irb(main):005:1> + 1
irb(main):006:1> )
=> 1
irb(main):007:0> op3 = (
irb(main):008:1* 1
irb(main):009:1> * 3
irb(main):010:1> * 9
irb(main):011:1> )
SyntaxError: compile error
(irb):9: syntax error, unexpected '\n', expecting tCOLON2 or '[' or
'.'
from (irb):11
from :0
Duh ! This must mean something, but what ?
Regards,
Nicolas Lehuen
I've just lost a few hours on this strange behaviour (bug ?).
Apparently it is caused by some kind of operator precedence
thingamagic. My original code was of course much more complicated, so
finding the problem wasn't easy (I first thought my code was
buggy...). Here is a piece of minimal code that reproduces the
problem :
8<-------------8<-------------8<-------------8<-------------
C:\temp>ver
Microsoft Windows [version 6.0.6000]
C:\temp>ruby -v
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
C:\temp>type bug.rb
sum1 = 1 + 1 + 1
puts sum1
sum2 = (
1
+ 1
+ 1
)
puts sum2
C:\temp>ruby bug.rb
3
1
8<-------------8<-------------8<-------------8<-------------
line parenthesis expressions in Ruby ; I just would like to understandFrom now on I promise I'll remember that you cannot safely use multi-
what this code means to Ruby, if it's not "give me the result of 1 + 1
+ 1".
The same takes place in irb :
C:\temp>irb
irb(main):001:0> sum1 = 1 + 1 + 1
=> 3
irb(main):002:0> sum2 = (
irb(main):003:1* 1
irb(main):004:1> + 1
irb(main):005:1> + 1
irb(main):006:1> )
=> 1
irb(main):007:0> op3 = (
irb(main):008:1* 1
irb(main):009:1> * 3
irb(main):010:1> * 9
irb(main):011:1> )
SyntaxError: compile error
(irb):9: syntax error, unexpected '\n', expecting tCOLON2 or '[' or
'.'
from (irb):11
from :0
Duh ! This must mean something, but what ?
Regards,
Nicolas Lehuen