什麼是Linq Aggregate方法的紅寶石等價物。它的工作原理是這樣的C#Linq的紅寶石等價聚合方法
var factorial = new[] { 1, 2, 3, 4, 5 }.Aggregate((acc, i) => acc * i);
變量ACC是越來越每累計從數組序列值傳遞給拉姆達時間..
什麼是Linq Aggregate方法的紅寶石等價物。它的工作原理是這樣的C#Linq的紅寶石等價聚合方法
var factorial = new[] { 1, 2, 3, 4, 5 }.Aggregate((acc, i) => acc * i);
變量ACC是越來越每累計從數組序列值傳遞給拉姆達時間..
這通常被稱爲倍數學以及幾乎任何編程語言。這是變質作用的更一般概念的一個實例。 Ruby從Smalltalk繼承它的這個特性的名字,它被稱爲inject:into:
(類似於aCollection inject: aStartValue into: aBlock.
)。因此,在Ruby中,它被稱爲inject
。這也是reduce
,這有些不幸,因爲這通常意味着稍有不同。
你的C#示例會看在Ruby中是這樣的:
factorial = [1, 2, 3, 4, 5].reduce(:*)
儘管其中之一很可能是更地道:
factorial = (1..5).reduce(:*)
factorial = 1.upto(5).reduce(:*)
正如@加比指出的那樣,它也有別名`reduce`,這就是數學術語。 – 2011-02-18 01:47:46
這就是所謂的'reduce` - 請參閱http:// en.wikipedia.org/wiki/Fold_%28higher-order_function%29對於各種語言的等效語言。 – Gabe 2011-02-18 01:46:43
您應該將此評論作爲答案,以便Ramesh可以將其標記爲已接受的答案。 – chuckj 2011-02-18 01:53:39