Feature #6079
closed
Added by walker (Walter Urbaniak) about 12 years ago.
Updated about 12 years ago.
Description
I often use my own mixin'd Hash#each_sorted that sorts the hash keys and then calls the block with the key and value. It would be useful to be added to Hash. (If this is already in Hash or Enumerable, I didn't see it.)
class Hash
def each_sorted(&block) # sort by key
self.keys.sort.each {|key| block.call(key, self[key])}
end
end
I feel there is no need for each_sorted
as it is equivalent to sort.each
(and 2 characters longer). Try:
{1 => 2, 0 => 4}.sort.each{|k, v| p "#{k} => #{v}"}
Hello,
2012/2/25 Marc-Andre Lafortune ruby-core@marc-andre.ca:
I feel there is no need for each_sorted
as it is equivalent to sort.each
(and 2 characters longer).
Agreed. If we can implement the feature without creating an
intermediate array, it might be useful. But I have no idea
to implement.
--
Yusuke Endoh mame@tsg.ne.jp
=begin
{1 => 2, 0 => 4}.lazy.sort.each{|k, v| p "#{k} => #{v}"}
=end
?
Hi,
(12/02/25 9:24), Yusuke Endoh wrote:
Agreed. If we can implement the feature without creating an
intermediate array, it might be useful. But I have no idea
to implement.
It would be possible, if you can tell if the current item is smaller
than the next item before fetching the latter. In other words, it'll
need a time machine.
--
Nobu Nakada
- Status changed from Open to Rejected
Closing as no implementation can improve on simple sort.each
.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0