Junior
Mis on tagasikutsumise funktsioonid?
sobes.tech AI
Vastus AI-lt
Funktsioon, mis antakse edasi teisele funktsioonile argumendina. Kutsub funktsioon, millele see on antud, hiljem välja kindlal hetkel või kindla sündmuse toimumisel.
Rakendused:
- Sündmuste töötlemine (GUI, süsteemi sündmused)
- Asünkroonilised operatsioonid
- Käitumise strateegiad
- Üldised algoritmid
Näide:
C:
#include <stdio.h>
// Funktsiooni näitaja tüüp, mis võtab vastu int ja tagastab void
typedef void (*CallbackFunc)(int);
void do_something_with_callback(int value, CallbackFunc callback) {
printf("Töötlen väärtusega: %d\n", value);
if (callback != NULL) {
callback(value); // Kutsume tagasihelifunktsiooni
}
}
void my_callback_function(int data) {
printf("Tagasihelifunktsioon täidetud väärtusega: %d\n", data);
}
int main() {
do_something_with_callback(10, my_callback_function);
do_something_with_callback(20, NULL); // Ilma tagasihelifunktsioonita
return 0;
}
C++:
#include <iostream>
#include <functional> // std::function jaoks
void do_something_with_callback(int value, std::function<void(int)> callback) {
std::cout << "Töötlen väärtusega: " << value << std::endl;
if (callback) { // Kontroll, kas on tagasihelifunktsioon
callback(value); // Kutsume tagasihelifunktsiooni
}
}
void my_callback_function(int data) {
std::cout << "Tagasihelifunktsioon täidetud väärtusega: " << data << std::endl;
}
int main() {
do_something_with_callback(10, my_callback_function);
// Lambda funktsioon kui tagasihelifunktsioon
do_something_with_callback(20, [](int data) {
std::cout << "Lambda tagasihelifunktsioon täidetud väärtusega: " << data << std::endl;
});
do_something_with_callback(30, nullptr); // Ilma tagasihelifunktsioonita
return 0;
}