Это обычно называется fold в математике, а также почти во всех языках программирования.Это пример более общей концепции катаморфизма .Ruby наследует свое имя для этой функции от Smalltalk, где она называется inject:into:
(используется как aCollection inject: aStartValue into: aBlock.
). Так, в Ruby она называется inject
.Он также имеет псевдоним reduce
, что несколько неудачно, поскольку это обычно означает что-то немного другое.
Ваш пример C # будет выглядеть примерно так в Ruby:из них, вероятно, будет более идиоматическим:
factorial = (1..5).reduce(:*)
factorial = 1.upto(5).reduce(:*)