[ruby-it] Il problema di Matteo all'RSC

Claudio Petasecca Donati cpetasecca a gmail.com
Gio 25 Set 2008 14:53:23 CEST


Con Ruby 1.9 (credo) possiamo sfruttare il metodo group_by, che e' 
definito anche in Rails:

>> pool = %w(m m f g f m f g m m g f)
=> ["m", "m", "f", "g", "f", "m", "f", "g", "m", "m", "g", "f"]
>> pool.group_by {|x| x}.values.flatten
=> ["m", "m", "m", "m", "m", "f", "f", "f", "f", "g", "g", "g"]

Per versioni di ruby precedenti, si puo' definire il metodo group_by:

module Enumerable
  def group_by
    assoc = Hash.new
    each do |element|
      key = yield(element)
      if assoc.has_key?(key)
        assoc[key] << element
      else
        assoc[key] = [element]
      end
    end
    assoc
  end
end

-- 
Posted via http://www.ruby-forum.com/.


More information about the Ml mailing list