Junior — Middle
Обяснете как работят указателите към функции на примера на функция, която съдържа вътре себе си друга функция.
sobes.tech AI
Отговор от AI
В iOS (Swift или Objective-C) концепцията за указатели към функции се реализира чрез closures или блокове. В езика C, на който е базиран Objective-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-и и функционално програмиране.