PHP:奇异函数调用function()()


PHP: strange function call function()()

这可能是一个非常奇怪的问题,但我需要确定它是否真的存在。我有一个PHP开发人员的招聘任务,任务如下:

使函数对两个数ab求和,但必须调用为sum(a)(b)

我从来没有见过这样的东西,也找不到任何关于上面的函数的东西。招聘人员说这不是打字错误;我困惑。

这项作业希望您理解部分应用程序。基本上,您的sum函数应该返回一个函数,该函数接受一个参数并从周围的闭包中获取另一个参数:

// Javascript
function sum(a) { return function(b) { return a + b  } }
sum(3)(4) // 7

你几乎可以在php中做同样的事情:

function sum($a) {
    return function($b) use($a) {
        return $a + $b;
    };
}

,但由于PHP不允许在一行中调用两次,因此您需要一个临时变量:

$add3 = sum(3);
print $add3(4); // 7

 sum(3)(4);

在PHP中是不可能的(截至5.5)-解析错误。

我很确定你的面试官实际上指的是javascript,而不是php(注意作业中没有$)。