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тер жана функционалдык программалоо үчүн пайдалуу.