Issue #6669 has been updated by Nobuyoshi Nakada.

Description updated

----------------------------------------
Feature #6669: A method like Hash#map but returns hash
https://bugs.ruby-lang.org/issues/6669#change-48692

* Author: Yutaka HARA
* Status: Feedback
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: core
* Target version: next minor
----------------------------------------
Given a hash `h`, `h.map` returns an array(alist), but sometimes I hope it returned a hash.

Example:

~~~ruby
class Hash
  def apply(&block)
    self.inject({}) do |h, (k, v)|
      new_k, new_v = *block.call(k, v)
      h[new_k] = new_v
      h
    end
  end
end

score = {
  taro: [1,3,2],
  jiro: [3,5,8,4],
  saburo: [2,9]
}
max_score = score.apply{|k,v| [k, v.max]}
#=> {taro: 3, jiro: 8, saburo: 9}
p max_score[:taro]
#=> 3
~~~

I'm not thinking "`apply`" is a perfect name for this. Maybe "`hash_map`" is better
(we already have "`flat_map`").


---Files--------------------------------
6669.pdf (41.7 KB)


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