Sobes.tech
Junior — Middle

Vysvetlite, ako fungujú ukazovatele na funkcie na príklade funkcie, ktorá obsahuje vo vnútri inú funkciu.

sobes.tech AI

Odpoveď od AI

V iOS (Swift alebo Objective-C) je koncept ukazovateľov na funkcie implementovaný pomocou closures alebo blokov. V jazyku C, na ktorom je založený Objective-C, ukazovatele na funkcie umožňujú odovzdávať funkcie ako parametre alebo ich ukladať na neskoršie volanie.

Príklad v C s funkciou, ktorá obsahuje inú funkciu vo vnútri (cez vnorenú funkciu alebo funkciu, ktorá vracia ukazovateľ):

#include <stdio.h>

// V C nie sú vnorené funkcie, ale môžeme vrátiť ukazovateľ na funkciu
int innerFunction(int x) {
    return x * x;
}

int (*outerFunction())(int) {
    // Vráti ukazovateľ na innerFunction
    return &innerFunction;
}

int main() {
    int (*funcPtr)(int) = outerFunction();
    int result = funcPtr(5); // volanie innerFunction cez ukazovateľ
    printf("Výsledok: %d\n", result); // Výsledok: 25
    return 0;
}

V Swift môžeme použiť closures:

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

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

Týmto spôsobom ukazovatele na funkcie umožňujú dynamicky vyberať a volať funkcie, čo je užitočné pre callbacky a funkcionálne programovanie.