2015-09-04 47 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!謝謝 –