функциональное программирование — вызов функции со всеми параметрами

Я на самом деле экспериментирую с функциональным программированием в php. Я хотел бы иметь некоторую точность в отношении некоторых вызовов функций.

В качестве примера:

function addition($num1){
return function ($num2) use ($num1){
return $num1+$num2;
}
}
$add_2_to = addition(2);
echo $add_2_to(3);
echo $add_2_to(4);

Есть ли способ вызвать функцию сложения со всеми параметрами?
Я попытался таким образом без шансов:

echo addition(2)(3);

7

Решение

Вы довольно близко PHP не имеет лексической области видимости, поэтому переменная $ num1 недоступна в возвращаемой функции … для этого вы должны явно импортировать ее, используя use

function addition($num1){
return function ($num2) use ($num1){
return $num1*$num2;
};
}
$add_2_to = addition(2);
echo $add_2_to(3);
echo $add_2_to(4);

Синтаксис, который вы предложили echo addition(2)(3); в настоящее время не будет работать, но когда php 7 прибудет, это будет. Для текущих версий php вы можете использовать call_user_func, чтобы делать то, что вы хотите.

echo call_user_func(addition(2), 3);
7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]