Callback
Da Wikipedia, l'enciclopedia libera.
In programmazione una callback è una funzione specializzata che viene passata come parametro a un'altra funzione (che invece è generica). Questo permette alla funzione generica di compiere un lavoro specifico attraverso la callback.
[modifica] Esempio
Un esempio pratico di funzione che richiede una callback tra i parametri è la funzione qsort
della libreria standard del C. La qsort
implementa l'algoritmo di ordinamento Quicksort e può essere utilizzata per ordinare un array contenente qualsiasi tipo di dato, a patto che l'array risieda completamente in memoria.
Il seguente frammento di codice ordina una ipotetica lista di soldati per grado e per nome. In questo esempio:
- la funzione callback è la
ConfrontaSoldati
che sa come confrontare i soldati, ma non sa nulla di ordinamento - la funzione generica è la
qsort
che non sa cosa sta ordinando, ma conoscendo le dimensioni dell'array e chiamando ripetutamente la funzione callback riesce a fare i giusti scambi per mettere in ordine l'array.
#include <stdlib.h> #include <string.h> #define QUANTI_SOLDATI 100 struct TSoldato { int grado; char nome[80]; } Esercito[QUANTI_SOLDATI]; int ConfrontaSoldati(const void *ptr1, const void *ptr2) { const TSoldato *s1=(const TSoldato*)ptr1; const TSoldato *s2=(const TSoldato*)ptr2; if(s1->grado!=s2->grado) return s1->grado - s2->grado; return strcmp(s1->nome, s2->nome); } void OrdinaEsercito() { qsort(Esercito, QUANTI_SOLDATI, sizeof(TSoldato), ConfrontaSoldati); }
Da notare che i parametri della qsort
sono rispettivamente: la base dell'array, la quantità di elementi presenti, la dimensione di ciascun elemento e la funzione di callback.