Actions
Bug #17167
closedNested numbered parameters are not allowed
Description
Numbered parameter is allowed in an ordinary block:
[[1, 2], [3, 4]].each{p _1}
# >> [1, 2]
# >> [3, 4]
as well as in a nested block:
[[1, 2], [3, 4]].each{|a| a.each{p _1}}
# >> 1
# >> 2
# >> 3
# >> 4
but not in both at the same time:
[[1, 2], [3, 4]].each{_1.each{p _1}}
# >> SyntaxError ((irb):2: numbered parameter is already used in) outer block here
# >> [[1, 2], [3, 4]].each{_1.each{p _1}}
^~
I feel that this should be a bug.
Note that an error is not raised when an ordinary block parameter with the same name is used in the outer and the inner blocks:
[[1, 2], [3, 4]].each{|v| v.each{|v| p v}}
# >> 1
# >> 2
# >> 3
# >> 4
If this is not a bug, the specification of numbered parameters is too complex. How am I supposed to use numbered parameters in such use case as above?
Actions
Like0
Like0