From: matz@... Date: 2020-09-13T03:13:46+00:00 Subject: [ruby-core:99998] [Ruby master Bug#17167] Nested numbered parameters are not allowed Issue #17167 has been updated by matz (Yukihiro Matsumoto). Status changed from Open to Closed Unlike `[[1, 2], [3, 4]].each{|v| v.each{|v| p v}}`, nested numbered parametersin `[[1, 2], [3, 4]].each{_1.each{p _1}}` has no clue like `|v|` for nesting. It is very hard to tell two `_1` have different meanings. It is a possible choice to allow users to shoot their feet, but we made a different decision here to avoid confusion. Matz. ---------------------------------------- Bug #17167: Nested numbered parameters are not allowed https://bugs.ruby-lang.org/issues/17167#change-87545 * Author: sawa (Tsuyoshi Sawada) * Status: Closed * Priority: Normal * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Numbered parameter is allowed in an ordinary block: ```ruby [[1, 2], [3, 4]].each{p _1} # >> [1, 2] # >> [3, 4] ``` as well as in a nested block: ```ruby [[1, 2], [3, 4]].each{|a| a.each{p _1}} # >> 1 # >> 2 # >> 3 # >> 4 ``` but not in both at the same time: ```ruby [[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: ```ruby [[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? -- https://bugs.ruby-lang.org/ Unsubscribe: