Продвинутые функции в Pawn

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Функции упрощают код. Разберем продвинутые техники.

Рекурсивные функции
Код:
stock Factorial(n)
{
    if(n <= 1)
    {
        return 1;
    }
    return n * Factorial(n - 1);
}

// Использование
new result = Factorial(5); // 120

Функции с переменным количеством параметров
Код:
stock SumNumbers(count, ...)
{
    new sum = 0;
    for(new i = 0; i < count; i++)
    {
        sum += getarg(i + 1);
    }
    return sum;
}

// Использование
new total = SumNumbers(3, 10, 20, 30); // 60

Указатели на функции
Код:
stock ProcessArray(array[], size, callback[])
{
    for(new i = 0; i < size; i++)
    {
        CallLocalFunction(callback, "i", array[i]);
    }
}

forward ProcessElement(value);
public ProcessElement(value)
{
    printf("Обработка: %d", value);
}

// Использование
new arr[5] = {1, 2, 3, 4, 5};
ProcessArray(arr, 5, "ProcessElement");

Важные моменты:
- Используйте функции для переиспользования кода
- Документируйте функции
- Проверяйте параметры
- Оптимизируйте часто используемые функции

Продвинутые функции улучшают структуру кода!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху