람다표현식
- 익명 함수 개체를 정의하는 방법을 말한다.
- 익명함수를 그 자리에서 인라이닝 할 수 있게 해준다.
- 이 기능을 사용하면 함수나 함수 객체를 별도로 작성하지 않아도 되기 떄문에 코드가 간결해짐.
문법
- 람다 표현식은 [] 와 표현식 본체 {} 블록으로 이루어진다
//lamda = []-> 반환타입 {본체};
//auto lamda = [(캡쳐영역)] {캡쳐영역 한걸 사용 가능 };
//[캡쳐블록](파라미터목록) mutable 익센셥_목록 속성_지정 -> 리턴_타입 {함수_바디}
//1.캡쳐블록 : 람다 함수 안에서 참조할 바깥 변수들을 지정한다. 여기에서 지정한 변수들은 람다 함수의 스코프 안으로 들어와서 함수바디에 접근 할 수 있게 된다.
//2.파라미터목록(생략가능) : 표현식에서 넘겨받을 파라미터 목록을 정의한다. 생략을 하려면, 뮤터블, 익센선, 리턴 타입을 지정하지 않아야 한다.
//3.mutable 키워드 (생략가능) : 람다 함수의 불변 속성을 지워서 캡처받은 변수르르 수정할 수 있게 한다.
//4.익센셥 목록(생략가능) : 람다 표현식의 바디 본체 안에서 던질 수 있는 익셉션의 종류를 지정한다
//5.속성 지정(생략 가능) : 람다표현식의 속성을 지정한다.
//6.리턴 타입(생략된다) : 생략하면 일반 함수의 리턴 타입 추론된다
//[=] 모든 변수를 값으로 캡쳐한다
//[&] 모든 변수를 참조로 켭채한다.
auto basiclamda = [] {std::cout << "Hello" << std::endl; };
auto parameterlamda = [](int ivalue) {std::cout << ivalue << std::endl; };
parameterlamda(77);
auto returnlamda = [](int a, int b) -> int {return a + b; };
returnlamda(6, 4);
//리턴 타입 생략 가능
auto returnlamda2 = [](int a, int b) {return a + b; };
returnlamda2(6, 4);
'프로그래밍 > C++' 카테고리의 다른 글
CAST 종류 + RTTI (0) | 2019.04.30 |
---|---|
virtual 순수가상함수 + 가상함수테이블 (0) | 2019.04.30 |
함수 객체 (0) | 2019.04.29 |
이동 시멘틱 (0) | 2019.04.29 |
함수 포인터 (0) | 2019.04.29 |