다음 코드의 실행 결과는?

과목: PHP

문제 번호: 2971

hard
다음 코드의 실행 결과는?
function multiply($factor) {
    return function($number) use ($factor) {
        return $number * $factor;
    };
}

$double = multiply(2);
$triple = multiply(3);

$numbers = [1, 2, 3];
$result = array_map($double, $numbers);
print_r($result);
A. Array ( [0] => 2 [1] => 4 [2] => 6 )
B. Array ( [0] => 3 [1] => 6 [2] => 9 )
C. Array ( [0] => 1 [1] => 2 [2] => 3 )
D. 오류 발생

정답: A



이 코드는 클로저(Closure)를 활용한 고차 함수 패턴입니다.

⦁ 코드 분석:

1단계: multiply(2) 함수 호출
$factor = 2인 익명 함수 반환
⦁ 반환된 함수: function($number) { return $number * 2; }

2단계: $double 변수에 이 익명 함수 저장

3단계: array_map($double, [1, 2, 3]) 실행
$double(1) → 1 * 2 = 2
$double(2) → 2 * 2 = 4
$double(3) → 3 * 2 = 6

⦁ 클로저의 핵심: use ($factor)
⦁ 외부 변수 $factor를 내부 함수에서 사용 가능
⦁ 함수가 생성될 때의 $factor 값을 "기억"

⦁ 고차 함수 패턴의 장점:
⦁ 재사용 가능한 함수 생성기
⦁ 다양한 배수기를 동적으로 생성
⦁ 함수형 프로그래밍 스타일

💡 학습 팁

이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.