Junior
Kas ir atpakaļzvanu funkcijas?
sobes.tech AI
Atbilde no AI
Funkcija, kas tiekta citai funkcijai kā arguments. Izsaucamā funkcija var vēlāk izsaukt nodoto funkciju noteiktā brīdī vai notikuma gadījumā.
Pielietojums:
- Notikumu apstrāde (GUI, sistēmas notikumi)
- Asinhronas operācijas
- Uzvedības stratēģijas
- Vispārīgi algoritmi
Piemērs:
C:
#include <stdio.h>
// Funkcijas norādītāja tips, kas pieņem int un atgriež void
typedef void (*CallbackFunc)(int);
void do_something_with_callback(int value, CallbackFunc callback) {
printf("Darbojos ar vērtību: %d\n", value);
if (callback != NULL) {
callback(value); // Izsauc atgriezenisko saiti
}
}
void my_callback_function(int data) {
printf("Atgriezeniskās saites funkcija izpildīta ar vērtību: %d\n", data);
}
int main() {
do_something_with_callback(10, my_callback_function);
do_something_with_callback(20, NULL); // Bez atgriezeniskās saites funkcijas
return 0;
}
C++:
#include <iostream>
#include <functional> // Lai izmantotu std::function
void do_something_with_callback(int value, std::function<void(int)> callback) {
std::cout << "Darbojos ar vērtību: " << value << std::endl;
if (callback) { // Pārbaude, vai ir atgriezeniskā saite
callback(value); // Izsauc atgriezenisko saiti
}
}
void my_callback_function(int data) {
std::cout << "Atgriezeniskā saite izpildīta ar vērtību: " << data << std::endl;
}
int main() {
do_something_with_callback(10, my_callback_function);
// Lamda funkcija kā atgriezeniskā saite
do_something_with_callback(20, [](int data) {
std::cout << "Lamda atgriezeniskā saite izpildīta ar vērtību: " << data << std::endl;
});
do_something_with_callback(30, nullptr); // Bez atgriezeniskās saites
return 0;
}