Sobes.tech
Junior

Τι είναι οι συναρτήσεις επιστροφής κλήσης;

sobes.tech AI

Απάντηση από AI

Λειτουργία που περνάει σε μια άλλη λειτουργία ως όρισμα. Η λειτουργία που καλεί μπορεί στη συνέχεια να εκτελέσει τη δοθείσα λειτουργία σε μια συγκεκριμένη στιγμή ή όταν συμβεί ένα συγκεκριμένο γεγονός.

Εφαρμογές:

  • Διαχείριση γεγονότων (GUI, συστημικά γεγονότα)
  • Ασύγχρονες λειτουργίες
  • Στρατηγικές συμπεριφοράς
  • Γενικοί αλγόριθμοι

Παράδειγμα:

C:

#include <stdio.h>

// Τύπος δείκτη σε λειτουργία που δέχεται ένα int και επιστρέφει void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Κάνοντας κάτι με την τιμή: %d\n", value);
    if (callback != NULL) {
        callback(value); // Κλήση της λειτουργίας επιστροφής
    }
}

void my_callback_function(int data) {
    printf("Η λειτουργία επιστροφής εκτελέστηκε με την τιμή: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Χωρίς λειτουργία επιστροφής
    return 0;
}

C++:

#include <iostream>
#include <functional> // Για std::function

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Κάνοντας κάτι με την τιμή: " << value << std::endl;
    if (callback) { // Έλεγχος αν υπάρχει λειτουργία επιστροφής
        callback(value); // Κλήση της λειτουργίας επιστροφής
    }
}

void my_callback_function(int data) {
    std::cout << "Η λειτουργία επιστροφής εκτελέστηκε με την τιμή: " << data << std::endl;
}

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

    // Λάμδα ως λειτουργία επιστροφής
    do_something_with_callback(20, [](int data) {
        std::cout << "Λάμδα λειτουργία επιστροφής εκτελέστηκε με την τιμή: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Χωρίς λειτουργία επιστροφής

    return 0;
}