Найти в Дзене
Алексей Рыбочкин

Коротко о лямбда функциях в С++

Добрый день. В данной статье рассматриваем описание Лямбда функции в языке программирования С++. Внизу статьи будет рабочий отрывок кода с комментариями, данная статья рассматривает только лямбда функции без описания самого языка. Определение анонимной функции. Анонимная функция определяется через []() { }. И имеет следующий вид []() { puts("This is Lambda A \n"); } (); Символы в конце (); обозначают, что функция сразу выводится в работу. Перед (); двоеточие не должно стоять. Между телом лямбды и (); нельзы ставить другие операторы. В общем случаем, лямбду легко в исходлнике определить через символы [] Лямбды возможны только в языке С++, а не в языке С, следовательно расширение Вашего файла с исходным кодом должно быть .cpp, а не .с. Использование ЛЯМБДА функции на примере. #include<iostream> using namespace std; int main(int argc , char *argv[]) { int z, x, v; // Глобальные переменнные z = 1; // 1 + 20 = 21 x = 20; v = 3; []() { puts("This is Lambda A \n"); } (); // анон

Добрый день.

В данной статье рассматриваем описание Лямбда функции в языке программирования С++.

Внизу статьи будет рабочий отрывок кода с комментариями, данная статья рассматривает только лямбда функции без описания самого языка.

Определение анонимной функции.

Анонимная функция определяется через []() { }.

И имеет следующий вид []() { puts("This is Lambda A \n"); } ();

Символы в конце (); обозначают, что функция сразу выводится в работу. Перед (); двоеточие не должно стоять. Между телом лямбды и

(); нельзы ставить другие операторы.

В общем случаем, лямбду легко в исходлнике определить через символы []

Лямбды возможны только в языке С++, а не в языке С, следовательно расширение Вашего файла с исходным кодом должно быть .cpp, а не .с.

Использование ЛЯМБДА функции на примере.

#include<iostream>

using namespace std;

int main(int argc , char *argv[])

{

int z, x, v; // Глобальные переменнные

z = 1; // 1 + 20 = 21

x = 20;

v = 3;

[]() { puts("This is Lambda A \n"); } (); // анонимное Пустое определение через [] с пустыми параметрами и запуском через (); в конце.

puts("Start \n");

auto bu {[](auto aa[]){cout << aa << "\n";} }; // определение лямбды, вывод aa - текста

bu("bu world \n"); // вызов именной лямбды bu(); с текстом bu world

auto c { [](){cout << "Hello C" << std::endl;} }; // определение лямбды

printf("\n"); // перевод строки

auto sum { [](int z=1, int x=5) // описание лямбда функции, в скобках значения по умолчанию = 6

{ int a=2, b=30; // описание локальных переменных в лямбда функции 2 + 30 = 32

cout << z + x;

auto bu("Fffgfg");

}

};

bu("xaxaxa \n"); // вызов именной лямбды bu(); с текстом xaxaxa

sum(z, x); // вызов лямды sum с глобальными переменными. = 21.

printf("\n"); // перевод строки

sum(); // вызов лямды sum с переменными по умолчанию. = 6.

puts("\nEnd \n");

return 0;

}