Sobes.tech
Junior — Middle

Magyarázza el a függvénymutatók működését egy olyan függvény példáján keresztül, amely egy másik függvényt tartalmaz.

sobes.tech MI

Válasz az MI-től

Az iOS-ben (Swift vagy Objective-C) a függvénymutatók fogalma zárványokon (closures) vagy blokkokon (blocks) keresztül valósul meg. Az Objective-C-re alapuló C nyelvben a függvénymutatók lehetővé teszik, hogy függvényeket paraméterként adjunk át vagy tároljunk későbbi hívásra.

C-ben, ahol egy belső függvényt tartalmazó függvény (egy beágyazott függvény vagy egy mutatót visszaadó függvény) példája:

#include <stdio.h>

// C-ben nincsenek beágyazott függvények, de vissza lehet adni egy függvénymutatót
int innerFunction(int x) {
    return x * x;
}

int (*outerFunction())(int) {
    // Visszaad egy mutatót az innerFunction-re
    return &innerFunction;
}

int main() {
    int (*funcPtr)(int) = outerFunction();
    int result = funcPtr(5); // innerFunction hívása mutatóval
    printf("Eredmény: %d\n", result); // Eredmény: 25
    return 0;
}

Swift-ben closures használhatók:

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

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

Így a függvénymutatók lehetővé teszik a függvények dinamikus kiválasztását és hívását, ami hasznos callback-eknél és funkcionális programozásnál.