Menu
Coddy logo textTech

Closure e 'use'

Fa parte della sezione Logica e flusso del percorso PHP di Coddy. Lezione 2 di 68.

Per impostazione predefinita, le funzioni anonime possono accedere solo alle variabili che vengono passate loro come parametri. Ma cosa succede se hai bisogno che la tua closure acceda a una variabile dello scope circostante? È qui che entra in gioco la parola chiave use.

La parola chiave use permette a una funzione anonima di «catturare» le variabili dal suo ambito genitore e di usarle al suo interno:

<?php
$message = "Welcome";

$greeting = function($name) use ($message) {
    echo $message . ", " . $name . "!";
};

$greeting("Bob");  // Stampa: Welcome, Bob!
?>

Nota che $message è definita fuori dalla funzione, ma includendo use ($message) dopo l'elenco dei parametri, la closure può accedere a quella variabile e usarla. Puoi acquisire più variabili separandole con virgole: use ($var1, $var2).

Questa funzionalità rende le chiusure molto più potenti, consentendo loro di lavorare con i dati del contesto circostante pur mantenendo la flessibilità delle funzioni anonime.

challenge icon

Sfida

Facile

Crea una funzione anonima che acquisisca una percentuale di sconto dall'ambito circostante usando la parola chiave use. La funzione deve accettare un prezzo come parametro e restituire il prezzo finale dopo aver applicato lo sconto.

Riceverai due input: la percentuale di sconto e il prezzo originale. Leggi entrambi gli input, crea una closure che acquisisca la percentuale di sconto, chiama la closure con il prezzo e stampa il prezzo finale scontato.

Formato dell'input: Due righe: la prima contiene la percentuale di sconto (un numero), la seconda contiene il prezzo originale (un numero che può contenere decimali)

Output previsto: Il prezzo finale dopo aver applicato lo sconto

Provalo tu

<?php
// Leggi i valori in input
$discount = floatval(fgets(STDIN));
$price = floatval(fgets(STDIN));

// TODO: Crea una funzione anonima che acquisisca la percentuale di sconto usando 'use'
// La funzione deve accettare un parametro per il prezzo e restituire il prezzo finale dopo lo sconto


// TODO: Chiama la closure con il prezzo e memorizza il risultato


// Stampa il prezzo finale
echo $finalPrice;
?>
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore PHP online