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

    // Lambda ֆունկցիա որպես հետադարձ
    do_something_with_callback(20, [](int data) {
        std::cout << "Lambda հետադարձ կատարվել է արժեքով՝ " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Բացառությամբ հետադարձ ֆունկցիա

    return 0;
}