3
AFAIK减少数组时,我们只能输出一次在最后像这样的变量:减少多个变量在Ruby中
(0..10).reduce(0) do |sum, value|
sum + value
end
如果我有散列对象的数组,我可以减少阵列和输出多种变量是这样的:在哈希
({:grade => 100, :sex => 'female'}, {:grade => 90, :sex => 'male'}).reduce(0, 0, 0) do |sum_of_grades, sum_of_male, sum_of_female, value|
sum_of_grades = sum_of_grades + value[:grade]
sum_of_male += 1 if value[:sex] == 'male'
sum_of_female +=1 if value[:sex] == 'female
end
哟你也可以切换到'each_with_object',而不必担心块的返回值(但你必须切换块的参数顺序)。 – 2012-03-23 05:30:29
@ muistooshort我真的不明白为什么这两种方法的参数顺序不同,看起来确实很傻。我一直在困惑这两个人。 – 2012-03-23 05:32:56
@AndrewMarshall:告诉我这件事。 AFAIK'reduce'命令是注入/减少的标准,'each_with_object'与'each_with_index'匹配。另一方面,'each_with_X'的顺序确实与名称匹配(我第一次注意到它)。 – 2012-03-23 05:45:23