From: "jeremyevans0 (Jeremy Evans)" Date: 2021-10-06T19:41:27+00:00 Subject: [ruby-core:105578] [Ruby master Feature#6669] A method like Hash#map but returns hash Issue #6669 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Feedback to Closed This was implemented by `Hash#to_h` taking a block starting in Ruby 2.6. ---------------------------------------- Feature #6669: A method like Hash#map but returns hash https://bugs.ruby-lang.org/issues/6669#change-94037 * Author: yhara (Yutaka HARA) * Status: Closed * Priority: Normal * Assignee: matz (Yukihiro Matsumoto) ---------------------------------------- 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/ Unsubscribe: