From: dgutov@... Date: 2019-04-09T15:18:07+00:00 Subject: [ruby-core:92221] [Ruby trunk Bug#15708] Implicit numbered argument decomposes an array Issue #15708 has been updated by dgutov (Dmitry Gutov). This is what happens when one syntactic sugar(*) collides with another. (*) `a.map { |x,| x }` being a shorthand for `a.map { |(x)| x }` , and sometimes not, depending on the runtime values. Neither of these are good, IMO (one for consistency and strong typing, and a lot of people have already expressed their feelings about the other). It's too late to get rid of the first one, I think. But we can still reverse the decision on the new one. ---------------------------------------- Bug #15708: Implicit numbered argument decomposes an array https://bugs.ruby-lang.org/issues/15708#change-77558 * Author: sawa (Tsuyoshi Sawada) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: 2.7.0dev * Backport: 2.4: UNKNOWN, 2.5: UNKNOWN, 2.6: UNKNOWN ---------------------------------------- In the following, `@1` refers to the entire item iterated: ```ruby a = [1, 2, 3] a.map{|x| x} # => [1, 2, 3] a.map{@1} # => [1, 2, 3] ``` whereas in the following, `@1` refers to the first item achieved by decomposing the item iterated, behaving the same as `x` given by `|(x)|` rather than by `|x|`: ```ruby a = [[1], [2], [3]] a.map{|x| x} # => [[1], [2], [3]] a.map{|(x)| x} # => [1, 2, 3] a.map{@1} # => [1, 2, 3] ``` Is this intended? -- https://bugs.ruby-lang.org/ Unsubscribe: