Анонимные функции
https://www.angelcode.com/angelscript/sdk/docs/manual/doc_script_anonfunc.html
Они же лямбды - функции объявляемые локально.
// Объявляем сигнатуру функции сравнения
funcdef bool Comparator(int a, int b);
// Объявляем функцию которая сравнивает два числа используя функцию сравнения
bool Compare(int a, int b, Comparator @comparator){
return comparator(a,b);
}
void [[[main|main.html]]]() {
// Сравниваем числа и ложим результат в переменные
bool result1 = Compare(1, 2, function(a,b){ return a == b; });
bool result2 = Compare(3, 4, function(a,b){ return a != b; });
}
Неоднозначность
Если функция перегружена и существует несколько вариантов использования, то для избежания неоднозначности можно указать тип аргумента.
funcdef void A(int);
funcdef void B(float);
void Overloaded(A@) {}
void Overloaded(B@) {}
void [[[main|main.html]]]() {
Overloaded(function(int a) {});
}
Last modified: 16 October 2024