lambdas c with examples
Aprenda todo sobre la expresión Lambda en C ++ en términos simples.
La expresión lambda es el concepto más nuevo en C ++ que se introdujo desde C ++ 11 en adelante.
En este tutorial, aprenderemos sobre lambdas en C ++. También discutiremos cómo se pueden definir y usar lambdas en el programa.
=> Consulte la serie completa de capacitación en C ++ aquí.
Lo que vas a aprender:
Expresiones / funciones Lambda
Las lambdas, como se les llama comúnmente, son básicamente pequeños fragmentos de código en línea que se pueden usar dentro de funciones o incluso declaraciones de llamadas a funciones. No se nombran ni se reutilizan.
Podemos declarar lambdas como 'auto' y usarlas en cualquier parte del programa.
¿Cómo usar / escribir Lambdas?
La sintaxis general para definir lambdas es la siguiente:
mejor VPN gratis para fire stick|_+_|
Captura de cierre : Introductor de Lambda según la especificación C ++.
Lista de parámetros : También llamado como declaraciones lambda. Es opcional y es similar a la lista de parámetros de un método.
Mudable : Opcional. Permite modificar las variables capturadas por una llamada por valor.
excepción : Especificación de excepción. Opcional. Utilice 'noexcept' para indicar que lambda no lanza una excepción.
Return_type : Opcional. El compilador deduce el tipo de retorno de la expresión por sí solo. Pero a medida que las lambdas se vuelven más complejas, es mejor incluir el tipo de retorno ya que es posible que el compilador no pueda deducir el tipo de retorno.
Definición de método : Cuerpo lambda.
Se utiliza una cláusula de captura de la definición lambda para especificar qué variables se capturan y si se capturan por referencia o por valor.
Un cierre de captura vacío [], indica que lambda no usa variables, lo que significa que solo puede acceder a las variables que son locales.
El modo 'captura por defecto' indica cómo capturar fuera de las variables a las que se hace referencia en Lambda:
- El cierre de captura [&] significa que las variables se capturan por referencia.
- El cierre de captura [=] indica que las variables se capturan por valor.
Si tenemos una captura predeterminada y una cláusula de captura, entonces no podemos tener un identificador en la captura de esa captura en particular que puede tener el identificador &. De manera similar, si la cláusula de captura contiene capture-default =, entonces la cláusula de captura no puede tener la forma = identificador. Además, un identificador o 'esto' no puede aparecer más de una vez en la cláusula de captura.
Esto debería quedar claro a partir de los siguientes ejemplos.
|_+_|Aquí, sum, sum_var y I son las variables que se capturarán y usarán en lambda.
A continuación se muestra un ejemplo básico de una expresión Lambda en C ++.
|_+_|Producción:
Suma de dos enteros: 11
Aquí tenemos una expresión lambda en línea para calcular la suma de dos valores. Hemos especificado el tipo de valores ayb como números enteros.
Un problema con el código anterior es que solo funciona con números enteros. Si más adelante en el programa queremos agregar dos dobles o cadenas o cualquier otro tipo, tendremos que tener esas muchas lambdas. Esta no es una forma eficiente de programar.
webdriver de selenio con ejemplo de pepino en eclipse
Podemos superar este problema utilizando parámetros de plantilla. Esto hace que las lambdas se generalicen para todos los tipos de datos. Esto se hace desde C ++ 14 en adelante.
Entonces, el programa anterior se modificará de la siguiente manera:
|_+_|Producción:
Suma (5,6) = 11
Suma (2.0,6.5) = 8.5
Suma ((string ('SoftwareTesting'), string ('help.com')) = SoftwareTestinghelp.com
Por tanto, en este programa, hemos utilizado una suma lambda genérica, que se puede utilizar para encontrar la suma de los dos objetos de cualquier tipo. Tenga en cuenta que hemos utilizado la palabra clave 'auto' para indicar que el tipo de datos del parámetro se deducirá en función de los datos.
Para demostrar el uso de esta lambda, la hemos usado con tres tipos de datos diferentes, int, float y string. De la salida sabemos que según el tipo de dato se realiza la operación de suma. Por ejemplo, cuando proporcionamos parámetros de cadena a lambda sum, concatena las dos cadenas.
Conclusión
Hemos llegado al final de este tutorial sobre expresiones lambda en C ++. Este es el concepto más nuevo en C ++ y puede ser muy útil cuando necesitamos ejecutar un pequeño fragmento de código en línea. Las lambdas también pueden hacerse genéricas y utilizarse para todos los tipos de datos.
En nuestro próximo tutorial, discutiremos algunos de los temas adicionales en C ++ como el tiempo, la entrada / salida estándar y el registro.
=> Lea la popular serie de capacitación en C ++ aquí.
Lectura recomendada
- ¿Qué son las pruebas de comparación (aprender con ejemplos)?
- Tutorial de Python DateTime con ejemplos
- Cortar comando en Unix con ejemplos
- Sintaxis del comando Unix Cat, opciones con ejemplos
- Uso del cursor en MongoDB con ejemplos
- Comando Ls en Unix con ejemplos
- Funciones de fecha y hora en C ++ con ejemplos
- Método MongoDB Sort () con ejemplos