Project

General

Profile

Actions

Feature #19002

open

Explicit splat for enumerator kwarg blocks

Added by inopinatus (Joshua GOODALL) over 1 year ago. Updated over 1 year ago.

Status:
Open
Assignee:
-
Target version:
-
[ruby-core:109858]

Description

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:

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

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

and then

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

and I present this as a feature suggestion.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0