Project

General

Profile

Feature #10208

Updated by shyouhei (Shyouhei Urabe) about 3 years ago

Now that we can convert 'a list of [key, value] pairs' into a hash with Enumerable#to_h,
how about make it take a block to specify 'how to convert each element into a [key, value] pair'?

Example:

~~~
# Convert users into an {id => name} hash
users.map{|u| [u.id, u.name]}.to_h

# Convert users into an {id => name} hash
users.to_h{|u| [u.id, u.name]}
~~~

This could also be a solution for these feature requests:

* Feature #6669 A method like Hash#map but returns hash



hsh.apply{|k, v| [k.to_s, v]}

== hsh.to_h{|k, v| [k.to_s, v]}

* Feature #7793 New methods on Hash
Feature #9970 Add `Hash#map_keys` and `Hash#map_values`



hsh.map_k(&:to_s)

== hsh.to_h{|k, v| [k.to_s, v]}

hsh.map_v(&:to_i)

== hsh.to_h{|k, v| [k, v.to_i]}

hsh.map_kv(&block)

== hsh.to_h(&block)

Back