Differenze tra le versioni di "Chiusura (informatica)"

nessun oggetto della modifica
m (r2.7.1) (Bot: Aggiungo: fi:Sulkeuma (ohjelmointi))
* [[Boo (linguaggio)|Boo]]
* [[C sharp|C#]] dalla versione 2.0
* [[C++11]]
* [[Eiffel (linguaggio)|Eiffel]]
* [[Groovy]]
* In [[C++]] e [[D (linguaggio di programmazione)|D]], i programmatori possono definire classi che fanno l'[[Overloading|overload]] dell'operatore <tt>()</tt> (operatore di applicazione della funzione). Questo genere di classi sono chiamate [[Oggetto funzione|oggetti funzione]] o, occasionalmente, ''funtori'' (anche se quest'ultimo termine è ambiguo, dato che in altri linguaggi ha un significato molto diverso). Questi oggetti funzione si comportano in modo simile alle funzioni nei linguaggi di programmazione funzionali, ma sono diversi dalle chiusure nel fatto che le variabili del loro ambiente non vengono "catturate". Per simulare una vera chiusura, si può immaginare di mettere tutte le variabili globali in una singola struttura (<tt>struct</tt>) e di passarne una copia ad un oggetto funzione.
* Il [[C sharp|C#]] permette ad un ''delegato'' (<tt>delegate</tt>) di memorizzare un riferimento ad un metodo di un'istanza di una classe (cioè un oggetto); quando verrà chiamato questo delegato, il metodo verrà invocato per quella particolare istanza. Per simulare una vera chiusura, si può creare un'istanza di una classe (cioè un oggetto) con gli attributi necessari. Un altro modo per simulare le chiusure è stato introdotto dalla versione 2.0 del linguaggio, con l'utilizzo dei '''metodi anonimi'''.
* Nel recente [[C++11]] è possibile creare una chiusura tramite l'utilizzo di lambda expressions oppure di std::function.
 
== Voci correlate ==
Utente anonimo