在 Ruby 中按身份分组
Group by identity in Ruby
Ruby 的 group_by()
方法如何根据其元素的标识(或者 self
)对数组进行分组?
a = 'abccac'.chars
# => ["a", "b", "c", "c", "a", "c"]
a.group_by(&:???)
# should produce...
# { "a" => ["a", "a"],
# "b" => ["b"],
# "c" => ["c", "c", "c"] }
在较新的 Ruby(2.2+?)中,
a.group_by(&:itself)
在较旧的情况下,您还需要做 a.group_by { |x| x }
也许,这会有所帮助:
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"]}
Ruby 的 group_by()
方法如何根据其元素的标识(或者 self
)对数组进行分组?
a = 'abccac'.chars
# => ["a", "b", "c", "c", "a", "c"]
a.group_by(&:???)
# should produce...
# { "a" => ["a", "a"],
# "b" => ["b"],
# "c" => ["c", "c", "c"] }
在较新的 Ruby(2.2+?)中,
a.group_by(&:itself)
在较旧的情况下,您还需要做 a.group_by { |x| x }
也许,这会有所帮助:
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"]}