Pawn. Создание и работа с функциями
Функции безусловно важны в программировании. Они упрощают код и делают его понятным для всех.
Создать функцию можно несколькими способами:
stock func_name() // stock - резервирует адрес в памяти, поэтому для функций рекомендуется использовать именно это
{
}
func_name() // отличия от stock в том, что если функция не используется, то pawn компилятор выдаст предупреждение
{
}
Ещё одна особенность этих способов в том, что при не использовании функции, заданной с помощью этих способов, компилятор их игнорирует и в скомпилированную программу они не включаются. Это очень удобно при использовании различных библиотек с огромным количеством функций, расширяющих функционал Pawn.
Есть ещё один способ создания функций:
forward func_name(); // объявляем о существовании данной функции
public func_name()
{
}
При использовании этого способа вызов идёт по имени, а не по адресу. Этот способ хорош тем, что данную функцию можно вызвать из любого скрипта подключённого к серверу и можно запустить таймер с этой функцией. Рекомендуется использовать именно в этих случаях, ведь два первых способа являются более оптимизированными вариантами.
Рассмотрим более сложные конструкции:
Создадим функцию с принимаемым параметром:
stock sum(x, y) // функция возвращает сумму двух целых чисел
{
return (x + y);
}
Использовать можно так:
new result = sum(5, 8);
printf("result=%d", result);
Выведет: result=13
stock sum(x, y, &result = 0) // функция записывает в переменную result результат выполнения x+y
{
result = x + y;
}
Использовать можно так:
new result;
sum(5, 8, result);
printf("result=%d", result);
Выведет: result=13
Для чисел других типов это выглядит так:
stock Float:sum(Float:x, Float:y) // функция возвращает сумму дробных чисел в виде дробного числа
{
return (x + y);
}
Использовать можно так:
new Float:result = sum(5.4, 8.8);
printf("result=%f", result);
Выведет: result=14.2
Для строк это выглядит так:
stock sum(x[], y) // функция выводит x и y
{
printf("x=%s, y=%d", x, y);
}
Использовать можно так:
sum("lala", 8);
Выведет: x=lala, y=8