2014-06-24 210 views
3

這可能是一個很奇怪的問題,但我需要確定它是否真的存在與否。 我已經得到了具有以下任務PHP開發人員位置招聘任務:PHP:奇怪的函數調用函數()()

做一個功能總和兩個數字一個b但它必須被稱爲總和(a)(b)

我從來沒有見過類似的東西,找不到類似上述功能的任何東西。招聘人員表示,這不是一個錯字;我很困惑。

+1

不確定PHP,但是在JavaScript中很容易。它只是意味着'sum'函數帶有一個參數,並返回一個函數,它本身就具有參數。 PHP可以像JavaScript那樣返回函數嗎? – David

+2

正確答案是:「PHP不是Javascript」。 –

回答

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沒有按「T允許在連續兩個電話,你需要一個臨時變量:

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

sum(3)(4); 

是不可能的在PHP(5.5)和解析錯誤。

我很確定你的面試官實際上是指JavaScript,而不是PHP(注意在作業中缺少$)。