From: shevegen@... Date: 2017-05-20T20:01:47+00:00 Subject: [ruby-core:81314] [Ruby trunk Feature#13583] Adding `Hash#transform_keys` method Issue #13583 has been updated by shevegen (Robert A. Heiler). I think the names are good, both #transform_keys and #transform_values. Seem quite clear to me from the names. On the linked older issue (-3 years), the names were different, Hash#map_keys and Hash#map_values. Matz said that the names may be confusing. Perhaps #transform_keys and #transform_values are better names. (I have not checked if the proposal is the very same; shyouhei provided a very specific definition here, including behaviour such as arity and yield-situations, which I think the other proposal did not have). Guess matz will have a look. graywolf, could you perhaps show some example documentation for the two methods? ---------------------------------------- Feature #13583: Adding `Hash#transform_keys` method https://bugs.ruby-lang.org/issues/13583#change-64997 * Author: graywolf (Gray Wolf) * Status: Open * Priority: Normal * Assignee: * Target version: ---------------------------------------- In 2.4, new useful method `Hash#transform_values` was added. I would like to propose also adding matching method `Hash#transform_keys`. ```ruby {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 ```ruby { a: 1, b: 2 }.transform_keys {|_| :same_key } # what should happen? ``` I think using `Hash[]` as model behaviour is a good idea. ```ruby 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). -- https://bugs.ruby-lang.org/ Unsubscribe: