group_by和reduce of Enumerable一起玩得不好

时间:2018-02-17 01:57:29

标签: ruby

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

filePosition

我希望密钥类似于18CA,这是一个案例编号。我希望集合是一个包含该案例编号的所有行的数组。而且我希望acc作为一个空数组开始,并在每次迭代时随数据一起增长。但是,key是nil,collection是nil,acc是group_by结果的当前迭代。我做错了什么?

1 个答案:

答案 0 :(得分:1)

你的reduce块参数只是向后,累加器是传递给块的第一个参数,可枚举元素是第二个。

csv.group_by { |i| i[2] }.reduce([]) do |acc, (key,collection)|

keycollection nil的原因是你正在解构你的累加器值,它以一个空数组开头,基本上是:

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