Menu
Coddy logo textTech

Введение в Lambda-выражения

Часть раздела Логика и управление потоком путешествия по C++ на Coddy. Урок 42 из 56.

Lambda-выражения — это мощная возможность C++, которая позволяет создавать небольшие анонимные function прямо там, где они нужны. Представляй их как мини-function, которые можно определить и использовать без необходимости писать отдельное объявление function.

Базовый синтаксис lambda-выражения соответствует следующему шаблону: [](){}. Квадратные скобки [] называются оговоркой захвата, скобки () содержат параметры (как и обычные function), а фигурные скобки {} содержат тело function.


Оговорка захвата определяет, какие variable из окружающей области видимости lambda может использовать. Наиболее распространённые формы:

[=] — захватить все локальные variable по значению (lambda получает собственную copy)
[&] — захватить все локальные variable по ссылке (lambda обращается к исходным объектам)
[] — ничего не захватывать (lambda не может использовать внешние variable)

Вот как создать и вызвать простую лямбда-функцию:

auto myLambda = []() {
    std::cout << "Hello from Lambda!" << std::endl;
};

myLambda();  // Вызвать лямбда-функцию

Вы также можете определить и выполнить lambda immediately without storing её в variable:

[]() {
    std::cout << "Immediate execution!" << std::endl;
}();

Lambda-выражения особенно полезны для коротких одноразовых function, которые вы не хотите определять отдельно. Они делают ваш код более компактным и позволяют держать связанную логику рядом.

challenge icon

Задание

Легко

Создай программу, демонстрирующую базовый синтаксис и выполнение лямбда-выражений. Это задание проверит твоё понимание того, как определять и вызывать простые лямбда-функции без параметров.

Твоя программа должна:

  1. Create лямбда-выражение, которое выводит Hello from Lambda!
  2. Store эту лямбду в variable с использованием ключевого слова auto
  3. Вызвать лямбда-функцию, чтобы выполнить её
  4. Create второе лямбда-выражение, которое выводит Lambda executed successfully!
  5. Выполнить эту вторую лямбду immediately без сохранения её в variable

Используй следующий точный формат вывода:

Hello from Lambda!
Lambda executed successfully!

Помни, что лямбда-выражения используют синтаксис [](){}, где квадратные скобки [] являются предложением захвата, скобки () содержат параметры (в этом задании они пусты), а фигурные скобки {} содержат тело function. Ты можешь сохранить лямбду в variable с использованием auto variableName = [](){...};, а затем вызвать её с помощью variableName();. Для немедленного выполнения можно использовать синтаксис [](){...}();, который определяет и вызывает лямбду в одной инструкции.

Попробуйте сами

#include <iostream>
using namespace std;

int main() {
    // TODO: Напишите ваш код ниже
    // Create a lambda expression that prints "Hello from Lambda!"
    // Сохраните его в переменной с помощью ключевого слова auto
    
    // Вызовите лямбда-функцию
    
    // Create a second lambda that prints "Lambda executed successfully!"
    // Выполните её немедленно, не сохраняя в переменной
    
    return 0;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C++