2006 年 3 月 1 日星期三

Rails 中的新增功能:Enumerable#group_by 和 Array#in_groups_of

马塞尔发表

变更集 3726 向 ActiveSupport 中添加了两种简单的方法:Enumerable#group_by 和 @ Array#in_groups_of@。

Enumerable#group_by 用于按照块的结果对枚举值进行分组。例如,它对于按日期对记录进行分组很有用。


     latest_transcripts.group_by(&:day).each do |day, transcripts| 
       p "#{day} -> #{transcripts.map(&:class) * ', '}"
     end
     "2006-03-01 -> Transcript"
     "2006-02-28 -> Transcript"
     "2006-02-27 -> Transcript, Transcript"
     "2006-02-26 -> Transcript, Transcript"

Enumerable#group_by 未来将直接内嵌在 Ruby 中,目前位于 1.9 分支中。

Array#in_groups_of 使您可以以特定大小为单位对数组进行迭代,并根据需要使用指定值填充剩余的
时隙(默认为 nil)。


     %w(1 2 3 4 5 6 7).in_groups_of(3) {|g| p g}
     ["1", "2", "3"]
     ["4", "5", "6"]
     ["7", nil, nil]

您必须喜爱块带来的优雅封装!让步。