这可能是一个非常奇怪的问题,但我需要确定它是否真的存在.我有一个PHP开发人员职位的招聘任务,具有以下任务:
设一个函数来对两个数字a和b 求和,但它必须被称为sum(a)(b)
我从来没有见过这样的东西,也找不到像上面那样的功能.招聘人员说这不是拼写错误; 我糊涂了.
geo*_*org 10
此作业要求您了解部分应用程序.基本上,你的sum
函数应该返回一个接受一个参数的函数,并从周围的闭包中获取另一个参数:
// Javascript
function sum(a) { return function(b) { return a + b } }
sum(3)(4) // 7
Run Code Online (Sandbox Code Playgroud)
你可以在php中做几乎一样的事情:
function sum($a) {
return function($b) use($a) {
return $a + $b;
};
}
Run Code Online (Sandbox Code Playgroud)
但由于php不允许连续两次调用,因此您需要一个临时变量:
$add3 = sum(3);
print $add3(4); // 7
Run Code Online (Sandbox Code Playgroud)
这个
sum(3)(4);
Run Code Online (Sandbox Code Playgroud)
在PHP中是不可能的(从5.5开始) - 解析错误.
我很确定你的面试官实际上意味着javascript,而不是php(注意在作业中没有$
's).