Lambda con parametri
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 43 di 56.
Ora che hai compreso la sintassi di base delle lambda, rendiamole più utili aggiungendo parametri. Proprio come le funzioni normali, le lambda possono accettare valori di input con cui lavorare.
Per aggiungere parametri a una lambda, inseriscili tra parentesi dopo la clausola di acquisizione:
auto addNumbers = [](int a, int b) {
std::cout << "Sum: " << (a + b) << std::endl;
};
addNumbers(5, 3); // Stampa: Sum: 8La sintassi dei parametri funziona esattamente come quella dei parametri di funzione regolari: specifichi il tipo seguito dal nome del parametro. Puoi avere più parametri separati da virgole, proprio come mostrato sopra.
Puoi anche chiamare subito una lambda con parametri senza memorizzarla:
[](int x, int y) {
std::cout << "Product: " << (x * y) << std::endl;
}(4, 7); // Stampa: Product: 28Questa possibilità di accettare parametri rende le lambda molto più flessibili e riutilizzabili, consentendoti di creare piccole funzioni in grado di elaborare valori di input diversi ogni volta che vengono chiamate.
Sfida
FacileCrea un programma che dimostri le espressioni lambda con parametri realizzando una semplice calcolatrice che esegue diverse operazioni matematiche. Questa sfida metterà alla prova la tua comprensione di come definire espressioni lambda che accettano valori in input e li utilizzano.
Verranno forniti i seguenti input:
- Due numeri interi
num1enum2che rappresentano i numeri da usare nei calcoli - Un carattere
operationche rappresenta l'operazione matematica da eseguire
Il tuo programma dovrebbe:
- Creare un'espressione lambda denominata
addche accetta due parametri interi e stampa la loro somma nel formatoSum: [result] - Creare un'espressione lambda denominata
subtractche accetta due parametri interi e stampa la loro differenza nel formatoDifference: [result] - Creare un'espressione lambda denominata
multiplyche accetta due parametri interi e stampa il loro prodotto nel formatoProduct: [result] - Leggere i due numeri e il carattere dell'operazione dall'input
- In base al carattere dell'operazione, chiamare la lambda appropriata con i due numeri
Il carattere dell'operazione sarà uno dei seguenti:
+per l'addizione (chiamare la lambdaadd)-per la sottrazione (chiamare la lambdasubtract)*per la moltiplicazione (chiamare la lambdamultiply)
Usa il seguente formato di output esatto in base all'operazione:
Per l'addizione:
Sum: [result]Per la sottrazione:
Difference: [result]Per la moltiplicazione:
Product: [result]Ricorda che i parametri delle lambda si definiscono tra parentesi dopo la clausola di cattura, usando la stessa sintassi dei normali parametri di funzione. Memorizza ogni lambda in una variabile usando la parola chiave auto, quindi chiama la lambda appropriata in base al carattere dell'operazione inserito, usando un'istruzione if-else o switch.
Provalo tu
#include <iostream>
using namespace std;
int main() {
// Leggi l'input
int num1, num2;
char operation;
cin >> num1 >> num2 >> operation;
// TODO: Crea espressioni lambda per le operazioni di addizione, sottrazione e moltiplicazione
// TODO: Usa un'istruzione if-else o switch per chiamare la lambda appropriata in base a operation
return 0;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online