Project

General

Profile

Feature #19002

Updated by inopinatus (Joshua GOODALL) about 2 years ago

I'm renovating some 2.x-era code that relied heavily on autosplat for block kwargs. As we all know, this throws an ArgumentError in Ruby 3: 

 ``` ruby 
 ary = [ 
   { foo: 42, bar: 101 }, 
   { foo: 99, bar: 123 } 
 ] 

 ary.map { |foo:, bar:| foo+bar } #=> ArgumentError 
 ``` 

 The nicest solution I could find so far is 

 ``` ruby 
 module Enumerable 
   def splat 
     each { |arg| yield **arg } 
   end 
 end 
 ``` 

 and then 

 ``` ruby 
 ary.map.splat `ary.map.splat { |foo:, bar:| foo+bar } #=> [143, 222] 
 ``` 222]` 

 and I present this as a feature suggestion. 

Back