내용은 아래의 참고사이트에 읽은 것을 요약하고 예제를 타이핑했습니다.
자세한 내용은 참고사이트에서
======================================================
lambda, Closure, callback
말 그대로 함수의 이름이 없는 함수
- 함수의 인자로 넘겨받을 수도 있으며, 함수의 결과값으로 리턴할 수도 있고, 변수에 값을 할당할 수도 있다
- 익명함수를 먼저 선언한 후 호출을 할 수 있음
람다표현식에서 사용하는 변수들이 모두 묶인 변수일때 닫힌 람다식이라고 부른다.
람다표현식에서 사용하는 변수들이 하나라도 자유변수가 있을때 열린 람다식이라고 부른다.
클로저는 바로 열린 람다식을 닫힌 람다식으로 만드는 것이다.
JavaScript의 클로저
function freeAddr(a){
return function(b){ // b 묶인 변수, 닫힌 람다식
return a+b;
}
}
var add1 = freeAddr(2);
add2(3); // 5
C++ lambda
void aaa()
{
std::vector<A> vec;
std::sort(vec.begin(), vec.end(), [](const A& o1, const A& o2)->bool
{
// compare function
}
}
void Ex7()
{
std::function<int(int,int)> op [] =
{
[](int a, int b) { return a + b; },
[](int a, int b) { return a - b; },
[](int a, int b) { return a * b; },
[](int a, int b) { return a / b; },
[someVar](int a, int b) {return a + b + someVar; },
}
for (auto f : op)
{
f(1, 1);
}
}
참고사이트
https://hyunseob.github.io/2016/09/17/lambda-anonymous-function-closure/
https://bab2min.tistory.com/325
'기술부채' 카테고리의 다른 글
JavaScript의 Prototype (0) | 2020.07.29 |
---|---|
Vsphere ESXi (0) | 2019.09.14 |