我想知道在Ruby 1.9中是否有一种更加标准的方法来做到这一点。
我有一个数组,其中包含许多对象,我想使用数组中每个对象的一个属性将它们分组为一个哈希表。
一个非常简单的例子:
我有一个数组,其中包含许多对象,我想使用数组中每个对象的一个属性将它们分组为一个哈希表。
一个非常简单的例子:
> sh = {}
=> {}
> aers = %w(a b c d ab bc de abc)
=> ["a", "b", "c", "d", "ab", "bc", "de", "abc"]
> aers.each do |aer|
> sh[aer.size] = [] if sh[aer.size].nil?
> sh[aer.size] << aer
> end
=> ["a", "b", "c", "d", "ab", "bc", "de", "abc"]
> sh
=> {1=>["a", "b", "c", "d"], 2=>["ab", "bc", "de"], 3=>["abc"]}
我尝试了这个方法,但是它的输出结果是错误的(如您所见): sh = Hash.new([])
=> {}
> aers.each do |aer|
> sh[aer.size] << aer
> end
=> ["a", "b", "c", "d", "ab", "bc", "de", "abc"]
> sh
=> {}