Menu
Coddy logo textTech

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

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

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

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


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

[=]: захватить все локальные variable по значению (lambda получает собственную копию)
[&]: захватить все локальные 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

Задание

Легко

Create программу, демонстрирующую базовый синтаксис и execution lambda expression. Это испытание проверит ваше понимание того, как определять и вызывать простые lambda function без параметров.

Ваша программа должна:

  1. Create lambda expression, которая prints Hello from Lambda!
  2. Store эту lambda в variable using auto keyword
  3. Call lambda function, чтобы выполнить её
  4. Create second lambda expression, которая prints Lambda executed successfully!
  5. Execute эту second lambda immediately without storing её в variable

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

Hello from Lambda!
Lambda executed successfully!

Помните, that lambda expressions используют синтаксис [](){}, где квадратные скобки [] являются capture clause, круглые скобки () содержат параметры (пустые для этого задания), а фигурные скобки {} содержат тело function. Вы можете Store lambda в variable using auto variableName = [](){...};, а затем вызвать её с помощью variableName();. Для немедленного выполнения можно использовать синтаксис [](){...}();, который определяет и вызывает lambda в одном операторе.

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

#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++