Я хочу использовать функциональную функцию «уменьшить» для вычисления таких вещей, как факториал числа. например, факториал 5 равен 5x4x3x2x1 = 120. В Ruby я могу сделать что-то вроде:
# factorial1.rb
(1..5).reduce{|accumulator,element| accumulator*element}
В PowerShell я бы сделал что-то вроде:
# factorial.ps
# ------ Install this library before using the "reduce" function
# Install-Module -Name functional
1..5 | reduce {$a*$b}
В обоих языки, ответ равен 120, и предполагается, что аккумулятор является целым числом с начальным значением первого элемента в диапазоне.
Если я переопределил факториал, чтобы иметь начальное значение 10, в Ruby Я бы закодировал его как
# factorial2.rb
# (1..5).reduce {|accumulator,element| accumulator*element} #uninitialized accumulator
(1..5).reduce(10){|accumulator,element| accumulator*element}
. Это дает ожидаемый ответ 1200.
ВОПРОС 1 : Как инициализировать аккумулятор «Reduce» в PowerShell ?
В следующем сценарии я хочу создать список факториалов. Если бы я закодировал его в Ruby, я мог бы инициализировать аккумулятор сокращения с [1] (потому что 0! Равен 1), что привело бы к следующему коду:
# factorial.rb
# (1..5).reduce {|accumulator,element| accumulator*element} #uninitialized accumulator
(1..5).reduce([1]){|accumulator,element| accumulator << accumulator[-1]*element}
Вывод выглядит примерно так
=> [1, 1, 2, 6, 24, 120]
ВОПРОС 2 : Как использовать расширяемый массив для инициализации аккумулятора для функции PowerShell «уменьшить» «функционального» модуля?