Junior
Czym są funkcje zwrotne?
sobes.tech AI
Odpowiedź od AI
Funkcja przekazywana do innej funkcji jako argument. Funkcja wywołująca może następnie wykonać przekazaną funkcję w określonym momencie lub podczas wystąpienia określonego zdarzenia.
Zastosowania:
- Obsługa zdarzeń (GUI, zdarzenia systemowe)
- Operacje asynchroniczne
- Strategie zachowania
- Uogólnione algorytmy
Przykład:
C:
#include <stdio.h>
// Typ wskaźnika na funkcję przyjmującą int i zwracającą void
typedef void (*CallbackFunc)(int);
void do_something_with_callback(int value, CallbackFunc callback) {
printf("Robię coś z wartością: %d\n", value);
if (callback != NULL) {
callback(value); // Wywołanie funkcji zwrotnej
}
}
void my_callback_function(int data) {
printf("Funkcja zwrotna wykonana z wartością: %d\n", data);
}
int main() {
do_something_with_callback(10, my_callback_function);
do_something_with_callback(20, NULL); // Bez funkcji zwrotnej
return 0;
}
C++:
#include <iostream>
#include <functional> // Dla std::function
void do_something_with_callback(int value, std::function<void(int)> callback) {
std::cout << "Robię coś z wartością: " << value << std::endl;
if (callback) { // Sprawdzenie czy funkcja zwrotna istnieje
callback(value); // Wywołanie funkcji zwrotnej
}
}
void my_callback_function(int data) {
std::cout << "Funkcja zwrotna wykonana z wartością: " << data << std::endl;
}
int main() {
do_something_with_callback(10, my_callback_function);
// Funkcja lambda jako funkcja zwrotna
do_something_with_callback(20, [](int data) {
std::cout << "Lambda jako funkcja zwrotna wykonana z wartością: " << data << std::endl;
});
do_something_with_callback(30, nullptr); // Bez funkcji zwrotnej
return 0;
}