Funciones Lambda
Desliza para mostrar el menú
Funciones lambda, o funciones anónimas, son una característica que permite crear funciones pequeñas y sin nombre directamente en el código. Son especialmente útiles cuando se necesita una función simple por un corto período de tiempo y no se desea definir una función nombrada por separado.
Las funciones lambda son útiles por varias razones:
Las funciones lambda permiten escribir código corto y conciso. Son ideales para operaciones que pueden expresarse en pocas líneas.
Pueden capturar variables del ámbito circundante, lo que permite utilizar variables de la función principal dentro de la lambda.
Las lambdas pueden pasarse como argumentos a otras funciones, lo que las hace útiles para funciones como std::for_each, std::sort, etc.
¿Cómo crear una función lambda?
Se puede utilizar la siguiente sintaxis para crear una función lambda.
lambda_function.h
123[capture_clause](parameter_list) -> return_type { // function body }
Una cláusula de captura en una función lambda permite especificar qué variables del ámbito circundante (fuera de la función lambda) pueden ser accedidas y utilizadas dentro de la función lambda. Existen 3 tipos comunes de cláusulas de captura:
-
No capturar nada
[]: la función lambda no puede acceder a ninguna variable del ámbito circundante; -
Capturar variables específicas por valor
[var1, var2, ...]: la función lambda puede acceder a variables específicas del ámbito circundante por valor; -
Capturar variables específicas por referencia
[&var1, &var2, ...]: la función lambda puede acceder a variables específicas del ámbito circundante por referencia.
main.cpp
1234567891011121314#include <iostream> int main() { int multiplier = 2; // Lambda function capturing `multiplier` by reference // With explicit return type (`int`) int result = [&multiplier](int num) -> int { return num * num * multiplier; }(5); // Invoking the lambda with argument 5 std::cout << result << std::endl; }
La función se construye de la siguiente manera:
-
La función lambda captura la variable
multiplierpor referencia[&multiplier]; -
El tipo de retorno
-> intespecifica que la función lambda devuelve un entero; -
La lambda se invoca inmediatamente con el argumento
5, y el resultado se almacena en la variableresult.
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla