2015-09-04 2 views
7

Я фактически экспериментирую с функциональным программированием на 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); 
+0

ps, ​​который является умножением (используя '*'), а не сложение. – naomik

ответ

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); 
+0

работа совершенно @Orangepill! благодаря –

Смежные вопросы