Sobes.tech
Junior — Middle

Ichki funksiyani o'z ichiga olgan funksiyadan misol qilib, funksiyalarga ko'rsatkichlar bilan ishlashni tushuntiring.

sobes.tech AI

AIdan javob

iOS (Swift yoki Objective-C) da funksiyalar uchun pointerlar konseptsiyasi yopilishlar (closures) yoki bloklar (blocks) orqali amalga oshiriladi. Objective-C asoslangan C tilida, funksiyalar uchun pointerlar funksiyalarni parametr sifatida o'tkazishga yoki ularni saqlashga imkon beradi.

C tilida, ichki funksiyani o'z ichiga olgan (ichki funksiya yoki pointer qaytaradigan funksiya orqali) misol:

#include <stdio.h>

// C da ichki funksiyalar mavjud emas, lekin funksiyaga pointer qaytarish mumkin
int innerFunction(int x) {
    return x * x;
}

int (*outerFunction())(int) {
    // innerFunction ga pointer qaytaradi
    return &innerFunction;
}

int main() {
    int (*funcPtr)(int) = outerFunction();
    int result = funcPtr(5); // pointer orqali innerFunction chaqirish
    printf("Natija: %d\n", result); // Natija: 25
    return 0;
}

Swiftda, yopilishlar (closures) ishlatilishi mumkin:

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

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

Shu tarzda, funksiyalar uchun pointerlar dinamik ravishda funksiyalarni tanlash va chaqirish imkonini beradi, bu esa callbacklar va funksional dasturlash uchun foydalidir.