[ruby-core:77751] [Ruby trunk Feature#10208] Passing block to Enumerable#to_h

From: knu@...
Date: 2016-10-24 17:24:23 UTC
List: ruby-core #77751
Issue #10208 has been updated by Akinori MUSHA.


So, we need a different name for this.

Here's some candidates I can think of:

- hash_by (proposed above)
- to_h_by
- hash_map
- map_h
- map_to_h


----------------------------------------
Feature #10208: Passing block to Enumerable#to_h
https://bugs.ruby-lang.org/issues/10208#change-61055

* Author: Yutaka HARA
* Status: Open
* Priority: Normal
* Assignee: 
----------------------------------------
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)




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>

In This Thread

Prev Next