Лямбды
Функции прямо на месте использования
После урока ты сможешь
- Писать лямбды с параметрами и захватом
- Понимать разницу между захватом по значению и по ссылке
- Передавать поведение в функцию
Шаг 1 из 6
Функция прямо на месте
Иногда функция нужна в одном-единственном месте, и выносить её наверх файла с отдельным именем — лишняя церемония. Для этого есть лямбда-выражения: функции, которые пишутся прямо там, где используются.
#include <print>
#include <string>
int main() {
auto square = [](int x) {
return x * x;
};
auto greet = [](const std::string& name) {
std::println("Привет, {}!", name);
};
std::println("{}", square(7));
greet("Аня");
}
Синтаксис: [захват](параметры) { тело }. Квадратные скобки — признак лямбды. Тип возвращаемого значения компилятор выводит сам из return. Лямбду кладут в переменную через auto, потому что у каждой лямбды свой уникальный тип, который нельзя написать словами.
Проверь себя
Что выведет программа?
#include <print>
int main() {
auto add = [](int a, int b) { return a + b; };
std::println("{}", add(2, 3) * 2);
}