[ruby-core:105578] [Ruby master Feature#6669] A method like Hash#map but returns hash
From:
"jeremyevans0 (Jeremy Evans)" <noreply@...>
Date:
2021-10-06 19:41:27 UTC
List:
ruby-core #105578
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: <mailto:ruby-core-request@ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>