Ruby group_by和reduce of Enumerable不能很好地结合在一起

Ruby group_by和reduce of Enumerable不能很好地结合在一起,ruby,Ruby,我正在读一个csv文件。csv的一个标题称为case。某些行的大小写相同。我想把它们组合在一起。我还希望在集合上使用reduce,以便将数据传递到新数组中: csv = CSV.parse(file, :headers => true) csv.group_by { |i| i[2] }.reduce([]) do |(key,collection),acc| attrs = [] attrs << collection[0] ... acc <<

我正在读一个csv文件。csv的一个标题称为case。某些行的大小写相同。我想把它们组合在一起。我还希望在集合上使用reduce,以便将数据传递到新数组中:

csv = CSV.parse(file, :headers => true)
csv.group_by { |i| i[2] }.reduce([]) do |(key,collection),acc|
  attrs = []
  attrs << collection[0]

  ...

  acc << attrs
end
csv=csv.parse(文件:headers=>true)
csv.group|u by{i|i[2]}.reduce([])do|(键,集合),acc|
属性=[]
attrs您的块参数正好向后。累加器是传递给块的第一个参数,可枚举元素是第二个

csv.group_by { |i| i[2] }.reduce([]) do |acc, (key,collection)|
原因
key
collection
nil
是您正在分解累加器值,它以空数组开始,本质上是:

key, collection = []
key # => nil
collection # => nil

大概
file
是一个文件名,但这不是
CSV.parse
所期望的第一个参数: