2015-11-24 313 views
3

身份如何Ruby的group_by()方法組通過其元素的身份(或者更確切地說self)的陣列? (?2.2+)組通過在紅寶石

a = 'abccac'.chars 
# => ["a", "b", "c", "c", "a", "c"] 

a.group_by(&:???) 
# should produce... 
# { "a" => ["a", "a"], 
# "b" => ["b"], 
# "c" => ["c", "c", "c"] } 
+0

發現了一箇舊的但類似的問題,http://stackoverflow.com/q/16932711/846163 – sschmeck

回答

9

在一個新的Ruby,

a.group_by(&:itself) 

在一老一,你仍然需要做a.group_by { |x| x }

+2

謝謝,這裏是[Object#本身()]的文檔鏈接(http://ruby-doc.org /core-2.2.0/Object.html#method-i-itself)。順便說一下,我用'&:to_s'來提供上面的例子。 – sschmeck

1

也許,這將幫助:

a = 'abccac'.chars 
a.group_by(&:to_s) 
#=> {"a"=>["a", "a"], "b"=>["b"], "c"=>["c", "c", "c"]} 

或者,下面也將工作:

a = 'abccac'.chars 
a.group_by(&:dup) 
#=> {"a"=>["a", "a"], "b"=>["b"], "c"=>["c", "c", "c"]} 
+0

謝謝,這是我的工作。 ;-) – sschmeck