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