2014-06-24 3 views
3

매우 이상한 질문 일 수 있습니다. 그러나 실제로 존재하는지 확실하게 확인해야합니다.PHP : strange function call function()()

기능에 두 개의 숫자B하지만 합으로 호출해야합니다에게 확인 : 나는 다음과 같은 작업과 함께 PHP 개발자 위치에 대한 모집 작업있어 (a) (b)

나는 결코 그런 것을 보지 못했고 위와 같은 기능에 관해서는 아무것도 찾을 수 없다. 채용 담당자는 오타가 아니라고 말합니다. 나는 혼란스러워.

+1

PHP에 대해 잘 모르겠지만 자바 스크립트에서는 충분히 쉽습니다. 'sum' 함수가 하나의 인수를 취해서 인수를 취하는 함수를 반환한다는 것을 의미합니다. PHP가 JavaScript와 같은 함수를 반환 할 수 있습니까? – David

+2

정답은 "PHP는 자바 스크립트가 아닙니다"입니다. –

답변

10

이 할당은 사용자가 partial application을 이해할 것으로 기대합니다.

// 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를하기 때문에 기본적으로, 당신의 sum 기능은 하나 개의 인수를 허용하고 다른 주변 폐쇄에서 하나를받는 함수를 반환해야

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

0 : '은 t은 연속 두 통화, 당신은 임시 변수가 필요합니다 수
sum(3)(4); 

은 PHP에서 (5.5로) 구문 분석 오류가 없습니다.

저는 인터뷰어가 실제로 자바 스크립트가 아니라 PHP가 아니라고 확신합니다 (할당에 $이 없음).