Упражнения на PHP: функция Curry принимает аргументы в нескольких вызовах
PHP: упражнение-100 с решением
Напишите PHP-программу для карри функции, которая принимает аргументы в нескольких вызовах.
Пример решения: -
PHP-код:
<?php
//Licence: https://bit.ly/2CFA5XY
function curry($function)
{
$accumulator = function ($arguments) use ($function, &$accumulator) {
return function (...$args) use ($function, $arguments, $accumulator) {
$arguments = array_merge($arguments, $args);
$reflection = new ReflectionFunction($function);
$totalArguments = $reflection->getNumberOfRequiredParameters();
if ($totalArguments <= count($arguments)) {
return $function(...$arguments);
}
return $accumulator($arguments);
};
};
return $accumulator([]);
}
$curriedAdd = curry(
function ($a, $b) {
return $a + $b;
}
);
$add10 = $curriedAdd(10);
var_dump($add10(15)); // 25
?>
Пример вывода:
INT (25)
Блок - схема:
Редактор кода PHP:
Есть другой способ решить это решение? Внесите свой код (и комментарии) через Disqus.
Previous: написать программу PHP, чтобы запоминать заданные функции в памяти.
Далее: написать программу PHP, которая будет вызывать данную функцию только один раз.
Каков уровень сложности этого упражнения?
Новый контент: Composer: менеджер зависимостей для PHP , R программирования
disqus2code