Project

General

Profile

Feature #13583

Adding `Hash#transform_keys` method

Added by graywolf (Gray Wolf) about 3 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
[ruby-core:81290]

Description

In 2.4, new useful method Hash#transform_values was added. I would like to propose also adding matching method Hash#transform_keys.

{a: 1, b: 2}.transform_keys { |k| k.to_s }
=> {"a"=>1, "b"=>2}

What needs to be considered is what to do in case of two keys mapping to the same new key

{ a: 1, b: 2 }.transform_keys {|_| :same_key } # what should happen?

I think using Hash[] as model behaviour is a good idea.

Hash[{ a: 1, b: 2 }.map { |key, value| [:s, value] }]
=> {:s=>2}

it's also how Hash#transform_keys works in rails (afaict).

This is a follow up feature request to #9970, which seems to be stalled. If the behaviour can be agreed upon, I can try putting together a patch (if no one else wants to step up).

Also available in: Atom PDF