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