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);
// Функсияи lambda ҳамчун бозгашт
do_something_with_callback(20, [](int data) {
std::cout << "Бозгашти lambda бо арзиш: " << data << std::endl;
});
do_something_with_callback(30, nullptr); // Бе функсияи бозгашт
return 0;
}