
지금 여기예요
4
441
함수 장식자
마지막 단계: 인자 처리
장식자 구현의
‘
핵심
’
단계를 처리할 차례입니다. 장식된 함수의 인자를 적절하게 처리할 수
있도록 장식자 함수를 구현하는 일이 남았습니다. 장식자 만들기 비법 네 번째 항목을 다시
확인합니다.
장식자는 장식된 함수의 시그너처를 유지해요
장식자는 장식된 함수와 같은 개수의 인자와 유형을 갖는 함수를 반환해야 합니다.
4
장식자를 기존 함수에 적용한 후 기존 함수를 호출하면 기존 함수가 장식자가 반환하는
함수로 대체됩니다. 이전 페이지의 장식자 만들기 비법 세 번째 항목을 완성한 코드에서
확인할 수 있듯이 기존 함수를 감싸면서 필요한 코드를 추가한 버전의 함수를 반환합니다.
이와 같이 감싸는 함수는 기존 함수를 장식합니다.
하지만 함수를 감싸는 것만으로는 부족합니다. 장식된 함수를 호출할 때의 고유 정보가
유지되어야 하기 때문이죠. 예를 들어 기존 함수가 두 개의 인자를 받는다면 감싼 함수도
두 개의 인자를 받아야 합니다. 인자의 개수를 미리 알 수 있다면 감싸는 함수를 적절하게
정의할 수 있을 겁니다. 하지만 장식자에 사용할 함수의 인자 개수를 미리 알 수 없으므로
장식자는 임의 개수와 모든 유형의 인자를 처리할 수 있어야 합니다.
어떻게 해야 할까요?
‘
범용성
’
이 정답입니다.
wrapper