Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Funciones Lambda | Algunos Temas Avanzados
Funciones en C++

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:

Concisión
expand arrow

Las funciones lambda permiten escribir código corto y conciso. Son ideales para operaciones que pueden expresarse en pocas líneas.

Ámbito local
expand arrow

Pueden capturar variables del ámbito circundante, lo que permite utilizar variables de la función principal dentro de la lambda.

Flexibilidad
expand arrow

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

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

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 multiplier por referencia [&multiplier];

  • El tipo de retorno -> int especifica que la función lambda devuelve un entero;

  • La lambda se invoca inmediatamente con el argumento 5, y el resultado se almacena en la variable result.

question mark

¿Cuál es el propósito de una cláusula de captura en una función lambda?

Selecciona la respuesta correcta

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 4

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Sección 4. Capítulo 4
some-alt