Differenze tra le versioni di "Chiusura (informatica)"

m
sistemo links e/o typos, correggo/elimino interlink nel testo, typos fixed: o → o
m (sistemo links e/o typos, correggo/elimino interlink nel testo, typos fixed: o → o)
Nei [[linguaggi di programmazione]], una '''chiusura''' è una [[astrazione]] che combina una [[Funzione (informatica)|funzione]] con le variabili libere presenti nell'[[Ambiente (programmazione)|ambiente]] in cui è definita secondo le [[regole di scope]] del linguaggio. Le [[Variabile (informatica)|variabili]] libere dell'ambiente rimangono accessibili per tutta la [[:en:Variable (programming)#Scope and extent|durata di vita]] (extent) della chiusura e pertanto persistono nel corso di invocazioni successive della chiusura. Di conseguenza, le variabili della chiusura possono essere usate per mantenere uno stato ed emulare costrutti della [[programmazione a oggetti]].
 
Le chiusure si rivelano utili quando una funzione ha bisogno di "ricordare" informazioni: ad esempio un parametro specifico per un'operazione di confronto, oppure il riferimento ad un [[widget]] in un [[callback]] di un'interfaccia grafica.
Poiché in ML il valore di <tt>y</tt> non può cambiare il comportamento di <tt>f</tt> non cambia.
Invece se si usa una variabile assegnabile, <tt>f</tt> restituisce il valore del suo parametro sommato al valore di <tt>y</tt> al momento in cui viene chiamata.
Ad esempio :
<source lang=ocaml>
val y = ref 1;
494 564

contributi