Ram*_*Vel 5 c# ruby linq aggregate jruby
什么是相当于Linq Aggregate方法的红宝石.它的工作原理是这样的
var factorial = new[] { 1, 2, 3, 4, 5 }.Aggregate((acc, i) => acc * i);
Run Code Online (Sandbox Code Playgroud)
每次将数组序列中的值传递给lambda时,变量acc都会累积.
Jör*_*tag 15
这通常被称为数学折叠以及几乎任何编程语言.它是一个更为笼统的概念的一个实例.Ruby从Smalltalk继承了它的这个特性的名称,在那里它被调用inject:into:(用得像aCollection inject: aStartValue into: aBlock.)所以,在Ruby中,它被调用inject.它也有别名reduce,这有点不幸,因为这通常意味着略有不同.
您的C#示例在Ruby中看起来像这样:
factorial = [1, 2, 3, 4, 5].reduce(:*)
Run Code Online (Sandbox Code Playgroud)
虽然其中一个可能更惯用:
factorial = (1..5).reduce(:*)
factorial = 1.upto(5).reduce(:*)
Run Code Online (Sandbox Code Playgroud)