Menu
Coddy logo textTech

Introdução a Expressões Lambda

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy — lição 42 de 56.

Expressões lambda são um recurso poderoso do C++ que permite criar funções pequenas e anônimas exatamente onde você precisa delas. Pense nelas como mini-funções que você pode definir e usar sem ter que escrever uma declaração de função separada.

A sintaxe básica para uma expressão lambda segue este padrão: [](){}. Os colchetes [] são chamados de cláusula de captura, os parênteses () contêm parâmetros (assim como funções regulares) e as chaves {} contêm o corpo da função.


A cláusula de captura controla quais variáveis do escopo circundante a lambda pode usar. As formas mais comuns são:

[=] — captura todas as variáveis locais por valor (a lambda recebe sua própria cópia)
[&] — captura todas as variáveis locais por referência (a lambda acessa as originais)
[] — não captura nada (a lambda não pode usar nenhuma variável externa)

Veja como criar e chamar uma lambda simples:

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

myLambda();  // Chama a função lambda

Você também pode definir e executar uma lambda imediatamente sem armazená-la em uma variável:

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

Expressões lambda são particularmente úteis para funções curtas e de uso único que você não deseja definir separadamente. Elas tornam seu código mais conciso e mantêm a lógica relacionada próxima.

challenge icon

Desafio

Fácil

Crie um programa que demonstre a sintaxe básica e a execução de expressões lambda. Este desafio testará sua compreensão de como definir e chamar funções lambda simples sem parâmetros.

Seu programa deve:

  1. Crie uma expressão lambda que imprima Hello from Lambda!
  2. Armazene esta lambda em uma variável usando a palavra-chave auto
  3. Chame a função lambda para executá-la
  4. Crie uma segunda expressão lambda que imprima Lambda executed successfully!
  5. Execute esta segunda lambda imediatamente sem armazená-la em uma variável

Use o seguinte formato de saída exato:

Hello from Lambda!
Lambda executed successfully!

Lembre-se de que as expressões lambda usam a sintaxe [](){} onde os colchetes [] são a cláusula de captura, os parênteses () contêm os parâmetros (vazios para este desafio) e as chaves {} contêm o corpo da função. Você pode armazenar uma lambda em uma variável usando auto variableName = [](){...}; e então chamá-la com variableName();. Para execução imediata, você pode usar a sintaxe [](){...}(); que define e chama a lambda em uma única instrução.

Folha de consulta

Expressões lambda são funções anônimas que podem ser definidas inline. Elas usam a sintaxe [](){} onde:

  • [] - cláusula de captura (controla o acesso a variáveis externas)
  • () - parâmetros
  • {} - corpo da função

Formas comuns de cláusula de captura:

  • [] - não captura nada
  • [=] - captura todas as variáveis externas por valor
  • [&] - captura todas as variáveis externas por referência

Armazenar e chamar uma lambda:

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

myLambda();  // Chama a função lambda

Executar uma lambda imediatamente:

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

Experimente você mesmo

#include <iostream>
using namespace std;

int main() {
    // TODO: Escreva seu código abaixo
    // Crie uma expressão lambda que imprima "Hello from Lambda!"
    // Armazene-a em uma variável usando a palavra-chave auto
    
    // Chame a função lambda
    
    // Crie uma segunda lambda que imprima "Lambda executed successfully!"
    // Execute-a imediatamente sem armazenar em uma variável
    
    return 0;
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo