PHP:奇怪的函数调用函数()()

时间:2014-06-24 13:31:13

标签: php function

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

  

功能设为两个数字 a b 但必须将其称为总和的(a)(b)中

我从来没有见过这样的东西,也找不到像上面这样的功能。招聘人员说这不是拼写错误;我很困惑。

1 个答案:

答案 0 :(得分:10)

此作业希望您了解partial application。基本上,你的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(请注意作业中缺少$)。