Bug #19619
closed
Numbered parameters don't work with method definition with parameters
Added by okuramasafumi (Masafumi OKURA) over 1 year ago.
Updated 4 months ago.
Description
This works:
class Foo
def bar(baz) = 'foo'
end
p Foo.new.bar('baz')
This also works:
o = Object.new
o.tap { |obj| def obj.bar(baz) = 'foo' }
p o.bar('baz')
Even this works:
o = Object.new
o.tap { def _1.bar = 'foo' }
p o.bar
But this DOESN'T work:
o = Object.new
o.tap { def _1.bar(baz) = 'foo' }
p o.bar('baz')
So, when we define a method with parameters on an instance given as numbered parameters, it doesn't work. If we change one condition (definition way, parameter existence, and so on), it works.
The result of the last code:
undefined method `bar' for #<Object:0x0000000108e20438> (NoMethodError)
- Subject changed from Endless method definition with parameters for an instance given as numbered parameters doesn't work to Numbered parameters don't work with method definition with parameters
Since this doesn't work too, endless and/or singleton method definition doesn't seem to matter.
1.times {p _1; def bar; end} #=> 0
1.times {p _1; def bar x; end} #=> nil
- Status changed from Open to Closed
- Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED
- Backport changed from 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: DONE
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0