Q**. 함수 객체(클로저)를 보관해 두었다가 나중에 다시 호출할 수 있는 방법이 있나요?**
A. 다른 함수에 인수로 줘서 호출하면 나중에 그 함수가 써먹을 수 있을 것입니다 :D
예를 들어 인수 둘을 받아 역수의 차를 내놓으려는데, 역수를 취하는 함수를 써먹는다고 합시다. 파이썬으로 쓰면, 이렇게요.
def inv_diff(x, y):
inv = lambda a: a ** -1
return inv(x) - inv(y)
역수를 취하는 함수는 ㄱㅇㄱ ㄴㄱ ㅅㅎㄷ ㅎ
가 되겠습니다
(ㄱㅇㄱ ㄴㄱ ㅅㅎㄷ ㅎ) (ㄱㅇㄴ ㄱㅇㄱ ㅎㄴ (ㄴㅇㄴ ㄴㄱ ㄱㅎㄷ) ㄱㅇㄱ ㅎㄴ ㄷㅎㄷ ㅎ) ㅎㄴ ㅎ
실제 호출해서 쓴 예:
ㄴ ㅁ
(ㄱㅇㄱ ㄴㄱ ㅅㅎㄷ ㅎ) (ㄱㅇㄴ ㄱㅇㄱ ㅎㄴ (ㄴㅇㄴ ㄴㄱ ㄱㅎㄷ) ㄱㅇㄱ ㅎㄴ ㄷㅎㄷ ㅎ) ㅎㄴ ㅎ
ㅎㄷ
실행 결과는 이렇습니다 (1/1-1/4)
JS로 조금 더 직역하면 이렇습니다
function inv_diff(x, y) {
return (function (inv) {
return inv(x) + (-inv(y));
})(a => 1/a);
}