函数式编程 - 具有所有参数的调用函数

时间:2015-09-04 16:22:59

标签: php parameters functional-programming

我实际上在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);

1 个答案:

答案 0 :(得分: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);