在 Javascript 中,很容易在一条语句中调用另一个函数返回的函数。考虑例如:
function createOperation(operator)
{
return Function("a", "b", "return a " + operator + "b;")
}
var result = createOperation("*")(2, 3);
在这里,我们调用一个函数来创建另一个将两个值相乘的函数,然后用两个参数调用这个新函数。
如果我尝试在 PHP 中复制类似的代码片段,我最终会使用两个语句和一个额外的变量:
function createOperation(operator)
{
return create_function('$a,$b', 'return $a '.$operator.' $b;');
}
$temp_var = createOperation("+");
$result = $temp_var(2, 3);
类似 Javascript 的简短形式不起作用:
$result = createOperation("+")(2, 3);
这在编写调用链(伪代码)时尤其乏味:
foo(arg1)(arg2, arg3)()(...)
这会变成:
$temp1 = foo($arg1);
$temp2 = $temp1($arg2, $arg3);
$temp3 = $temp2();
...
所以我的问题是:在 PHP 中有没有一种方法可以调用另一个函数返回的函数而不使用临时变量,或者至少在一个相同的语句中?
最佳答案
正如在 php repo 中看到的那样,@NikiC 正在积极致力于实现 his RFC , ()()
语法已经在主干中:
https://github.com/php/php-src/commit/64e4c9eff16b082f87e94fc02ec620b85124197d
我不知道发布 map 是什么样的,希望我们能尽快在 php 中获得合适的语法。
关于php - 我们可以调用匿名函数而不将其存储在 PHP 的变量中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25510992/