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;
}