Sobes.tech
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;
}