Sobes.tech
Junior — Middle

განმარტეთ ფუნქციებზე მიმანიშნებლების მუშაობა მაგალითით, სადაც ფუნქცია შეიცავს თავის შიგნით სხვა ფუნქციას.

sobes.tech AI

პასუხი AI-სგან

iOS (Swift ან თუ Objective-C) კონცეფცია ფუნქციის მაჩვენებლების განხორციელება ხდება closures ან blocks-ის საშუალებით. Objective-C-ზე დაფუძნებულ C ენაში, ფუნქციის მაჩვენებლები საშუალებას იძლევა ფუნქციები გადაეცეს პარამეტრად ან შეინახოს მათთვის შემდგომი გამოძახებისთვის.

C-ში, სადაც არსებობს შიდა ფუნქცია, რომელიც შეიცავს სხვა ფუნქციას (შიდა ფუნქციის ან მაჩვენებლის დაბრუნების ფუნქციის საშუალებით):

#include <stdio.h>

// C-ში შიდა ფუნქციები არ არსებობს, მაგრამ შეიძლება დაბრუნდეს ფუნქციის მაჩვენებელი
int innerFunction(int x) {
    return x * x;
}

int (*outerFunction())(int) {
    // აბრუნებს innerFunction-ის მაჩვენებელს
    return &innerFunction;
}

int main() {
    int (*funcPtr)(int) = outerFunction();
    int result = funcPtr(5); // innerFunction-ის გამოძახება მაჩვენებლით
    printf("შედეგი: %d\n", result); // შედეგი: 25
    return 0;
}

Swift-ში, closures-ები გამოიყენება:

func outerFunction() -> (Int) -> Int {
    func innerFunction(x: Int) -> Int {
        return x * x
    }
    return innerFunction
}

let funcPtr = outerFunction()
print(funcPtr(5)) // 25

ამ გზით, ფუნქციის მაჩვენებლები საშუალებას იძლევა დინამიურად ირჩევთ და გამოძახებთ ფუნქციებს, რაც სასარგებლოა callback-ებისთვის და ფუნქციონალურ პროგრამირებაში.