기술부채

익명함수(Anonymous function)

생각하는렁이G 2019. 9. 15. 20:37

내용은 아래의 참고사이트에 읽은 것을 요약하고 예제를 타이핑했습니다.

자세한 내용은 참고사이트에서 

======================================================

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