4
다른 클로저에서 클로저를 래핑하는 경우 중첩 된 클로저를 호출 할 수 없습니다. 왜 안돼? 나는 그 문제를 가장 잘 보여주는 예가 있다고 생각한다.클로저에서 랩핑 된 클로저를 호출 할 수 없습니까?
이 PHP 코드 :
function FInvoke($func) {
$func();
}
FInvoke(function() { echo "Direct Invoke Worked\n"; });
작품 기대와 인쇄는 "직접 호출이 근무"로. 나는 약간 우회의 다른 수준을 추가 할을 수정하는 경우
그러나, 그것은 실패
function FInvoke($func) {
$func();
}
function FIndirectInvoke($func) {
FInvoke(function() {
$func();
});
}
FIndirectInvoke(function() { echo "Never makes it here"; });
실패 메시지가 "치명적인 오류 : 함수 이름은 라인 X에 file.php에서 문자열이어야합니다"
감사를 사용하여 내부 람다 FUNC $를 통과해야! 그래서 나는이 함수들 중 하나를 "function() use ($ func) {$ func();}"이라고 선언 할 필요가있다. " –
그래, 나는 미래의 독자들을 위해 그것을 떠났다. –