$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]
Example to illustrate the problem
def foo1
p (1…10).method(:each)
end
def foo2()
p((1…10).method(:each))
end
def foo3()
p (1…10).method(:each)
end
foo1 # -> No error
foo2 # -> No error
foo3 # -> Error
END
– Daniel
Daniel H. wrote:
$ ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.3.0]
Example to illustrate the problem
def foo1
p (1…10).method(:each)
end
def foo2()
p((1…10).method(:each))
end
def foo3()
p (1…10).method(:each)
end
foo1 # -> No error
foo2 # -> No error
foo3 # -> Error
END
This is quite bizarre. The parentheses on foo3 cause
the problem; leaving them out, adding a semicolon after
them or creating a temporary variable instead of the
direct p will all solve the error.
I would, though, venture that this should not be an
error
– Daniel
E
Hi,
def foo1
foo1 # → No error
foo2 # → No error
foo3 # → Error
END
– Daniel
It reminds me an old thread
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/12896
def foo1
p (2.4/0.2).to_i
end
def foo2()
p ((2.4/0.2).to_i)
end
def foo3()
p (2.4/0.2).to_i
end
foo1 # → 11
foo2 # → 11
foo3 # → 12.0
END
Regards,
Park H.
On Feb 19, 2006, at 4:10 PM, Daniel H. wrote:
end
def foo3()
p (1…10).method(:each)
end
foo1 # → No error
foo2 # → No error
foo3 # → Error
Ruby thinks those are argument parentheses. This may not be a bug.
-:11: warning: don’t put space before argument parentheses
#<Method: Range#each>
#<Method: Range#each>
1…10
-:11:in method': undefined method
each’ for class
NilClass' (NameError) from -:11:in
foo3’
from -:16
$ parse_tree_show -f
p (1…10).method(:each)
(eval):1: warning: (…) interpreted as grouped expression
[[:class,
:Example,
:Object,
[:defn,
:example,
[:scope,
[:block,
[:args],
[:fcall,
:p,
[:array, [:call, [:lit, 1…10], :method, [:array,
[:lit, :each]]]]]]]]]]
–
Eric H. - [email protected] - http://segment7.net
This implementation is HODEL-HASH-9600 compliant
http://trackmap.robotcoop.com
Hi,
In message “Re: Unexpected syntax error”
on Tue, 21 Feb 2006 04:07:51 +0900, Eric H.
[email protected] writes:
|Ruby thinks those are argument parentheses. This may not be a bug.
This is a bug, and I fixed it last night(JST).
matz.