Sobes.tech
Junior

Qu'est-ce que les fonctions de rappel ?

sobes.tech IA

Réponse de l'IA

Fonction transmise à une autre fonction en tant qu'argument. La fonction appelante peut ensuite exécuter la fonction transmise à un moment donné ou lors de la survenue d'un événement spécifique.

Applications:

  • Gestion des événements (GUI, événements système)
  • Opérations asynchrones
  • Stratégies de comportement
  • Algorithmes génériques

Exemple:

C:

#include <stdio.h>

// Type de pointeur de fonction acceptant un int et renvoyant void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Faisant quelque chose avec la valeur : %d\n", value);
    if (callback != NULL) {
        callback(value); // Appel de la fonction de rappel
    }
}

void my_callback_function(int data) {
    printf("Fonction de rappel exécutée avec la valeur : %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Sans fonction de rappel
    return 0;
}

C++:

#include <iostream>
#include <functional> // Pour std::function

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Faisant quelque chose avec la valeur : " << value << std::endl;
    if (callback) { // Vérification de la présence de la fonction de rappel
        callback(value); // Appel de la fonction de rappel
    }
}

void my_callback_function(int data) {
    std::cout << "Fonction de rappel exécutée avec la valeur : " << data << std::endl;
}

int main() {
    do_something_with_callback(10, my_callback_function);

    // Fonction lambda comme rappel
    do_something_with_callback(20, [](int data) {
        std::cout << "Rappel lambda exécuté avec la valeur : " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Sans fonction de rappel

    return 0;
}