다음 코드의 실행 결과는?
다음 코드의 실행 결과는?
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
이 코드는 클로저(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 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.