Sobes.tech
Junior

Kas ir atpakaļzvanu funkcijas?

sobes.tech AI

Atbilde no AI

Funkcija, kas tiekta citai funkcijai kā arguments. Izsaucamā funkcija var vēlāk izsaukt nodoto funkciju noteiktā brīdī vai notikuma gadījumā.

Pielietojums:

  • Notikumu apstrāde (GUI, sistēmas notikumi)
  • Asinhronas operācijas
  • Uzvedības stratēģijas
  • Vispārīgi algoritmi

Piemērs:

C:

#include <stdio.h>

// Funkcijas norādītāja tips, kas pieņem int un atgriež void
typedef void (*CallbackFunc)(int);

void do_something_with_callback(int value, CallbackFunc callback) {
    printf("Darbojos ar vērtību: %d\n", value);
    if (callback != NULL) {
        callback(value); // Izsauc atgriezenisko saiti
    }
}

void my_callback_function(int data) {
    printf("Atgriezeniskās saites funkcija izpildīta ar vērtību: %d\n", data);
}

int main() {
    do_something_with_callback(10, my_callback_function);
    do_something_with_callback(20, NULL); // Bez atgriezeniskās saites funkcijas
    return 0;
}

C++:

#include <iostream>
#include <functional> // Lai izmantotu std::function

void do_something_with_callback(int value, std::function<void(int)> callback) {
    std::cout << "Darbojos ar vērtību: " << value << std::endl;
    if (callback) { // Pārbaude, vai ir atgriezeniskā saite
        callback(value); // Izsauc atgriezenisko saiti
    }
}

void my_callback_function(int data) {
    std::cout << "Atgriezeniskā saite izpildīta ar vērtību: " << data << std::endl;
}

int main() {
    do_something_with_callback(10, my_callback_function);

    // Lamda funkcija kā atgriezeniskā saite
    do_something_with_callback(20, [](int data) {
        std::cout << "Lamda atgriezeniskā saite izpildīta ar vērtību: " << data << std::endl;
    });

    do_something_with_callback(30, nullptr); // Bez atgriezeniskās saites

    return 0;
}