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