Introdução a Expressões Lambda
Parte da seção Lógica & Fluxo do Journey de C++ da Coddy. Lição 42 de 56.
As expressões Lambda são um recurso poderoso do C++ que permite criar pequenas function anônimas exatamente onde você precisa delas. Pense nelas como mini-functions que você pode definir e usar without precisar escrever uma declaração de function 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 as funções regulares), e as chaves {} contêm o corpo da function.
A cláusula de captura controla quais variable do escopo ao redor a lambda pode usar. As formas mais comuns são:
[=] — captura todas as variable locais por valor (a lambda obtém sua própria copy)[&] — captura todas as variable locais por referência (a lambda acessa as originais)[] — não captura nada (a lambda não pode usar nenhuma variable externa)Veja como criar e chamar uma lambda simples:
auto myLambda = []() {
std::cout << "Hello from Lambda!" << std::endl;
};
myLambda(); // Chama a função lambdaVocê também pode definir e executar uma lambda imediatamente sem armazená-la em uma variável:
[]() {
std::cout << "Immediate execution!" << std::endl;
}();Lambda expression são particularmente úteis para functions curtas e de uso único que você não quer definir separadamente. Elas tornam seu código mais conciso e mantêm a lógica relacionada próxima.
Desafio
FácilCreate um programa que demonstre a sintaxe básica e a execution de expressões lambda. Este desafio testará sua compreensão de como definir e chamar simples funções lambda sem parâmetros.
Seu programa deve:
- Create uma expressão lambda que prints
Hello from Lambda! - Store esta lambda em uma variable using a palavra-chave
auto - Call a função lambda para executá-la
- Create uma segunda expressão lambda que prints
Lambda executed successfully! - Execute esta segunda lambda immediately without armazená-la em uma variable
Use o seguinte formato de saída exato:
Hello from Lambda!
Lambda executed successfully!Lembre-se de que expressões lambda usam a sintaxe [](){}, where os colchetes [] são a cláusula de captura, os parênteses () contêm parâmetros (vazios para este desafio) e as chaves {} contêm o corpo da function. Você pode Store uma lambda em uma variable using auto variableName = [](){...}; e then chamá-la com variableName();. Para execution Immediate, você pode usar a sintaxe [](){...}();, que define e chama a lambda em uma única instrução.
Experimente você mesmo
#include <iostream>
using namespace std;
int main() {
// TODO: Escreva seu código abaixo
// Create a lambda expression that prints "Hello from Lambda!"
// Armazene-a em uma variável usando a palavra-chave auto
// Chame a função lambda
// Create a second lambda that prints "Lambda executed successfully!"
// Execute-a imediatamente sem armazenar em uma variável
return 0;
}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
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros4Mapas (Pares Chave-Valor)
Introdução ao std::mapCriando um MapaAcessando e Modificando ValoresVerificando ChavesRemovendo ParesIterando sobre um MapaRecapitulação - Frequência de Palavras7Funções Avançadas
Passagem por ReferênciaIntrodução a Expressões LambdaLambdas com ParâmetrosLambdas com Valores de RetornoIntrodução à RecursãoFatorial RecursivoOrdenação com Lambda2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma TarefaPratique por conta própria: Compilador de C++ online