在C++11標準中,新增 Lambda Expression 這個功能。Lambda Expression 做的事情類似於一個匿名的函示(Anonymous function),即不直接以 Function name 去 call 它,而是以一個類似於 inline 的形式去 implement。
Basic Syntax
Lambda Expression 的 basic systax 如下
1 2 3
[capture list] (parameter list) mutable(optional) exception attribute -> return type { // function body }
[capture list]: 可以去抓取這個scope中的 varialbe的數值,並決定將會以何種形式(call by value or call by reference)傳送 例如,若我們後續要 capture 兩個 variable 進入這個 Lambda Expression,分別是 int x and int y
voidlambda_value_capture(){ int value = 1; auto copy_value = [value] { //capture value return value; }; //declaration of lambda expression value = 100; auto stored_value = copy_value(); std::cout << "stored_value = " << stored_value << std::endl; // At this moment, stored_value == 1, and value == 100. // Because copy_value has copied when its was created. }