Автор: BlackTok[BT] (участник нашего Discord)
Функции — одна из важнейших вещей в SQF, как и в других языках программирования. И в этом уроке мы разберем: для чего нужны функции, как их создавать и как использовать.
Пример:
_fnc = {};
Здесь мы создали переменную _fnc и присвоили ей функцию. Функция ограничена фигурными скобками, содержащими внутри себя код, который будет выполняться при вызове этой функции.
Пример:
_fnc = {_a = 5 + 10; _a}; _b = call _fnc; _b //вернет нам 15
В функции можно передавать параметры, которые функция обработает.
Пример:
[parametr] call _fnc;
Для того, чтобы получить эти параметры внутри функции, мы должны использовать «Magic Variables» _this либо param или params
Пример 1:
parametr call _fnc; //вызываем функцию с одним параметром _fnc = {_parametr = _this;}; // в функции создали переменную и присвоили ей значение, переданное в функции с помощью параметра
Пример 2:
[parametr1,parametr2] call _fnc; //вызываем функцию с массивом, содержащим 2 параметра _fnc = {_parametr1 = _this # 0; _parametr2 = _this # 1;};
В функции создали две переменные и присвоили им значения, переданные в функции с помощью массива с параметрами.
Первой переменной мы присвоили первый элемент массива (_this # 0), так как в массивах индекс элемента начинается с 0
Пример 3:
[parametr1,parametr2] call _fnc; //вызываем функцию с массивом, содержащим 2 параметра _fnc = {_parametr1 = param [0,"",[],[]]; _parametr2 = param [1,"",[],[]];}; // в функции создали две переменные и присвоили им значения, переданные в функции с помощью массива с параметрами. Первой переменной мы присвоили первый элемент массива (param [0]), так как в массивах индекс элемента начинается с 0
Пример 4:
[parametr1,parametr2] call _fnc; //вызываем функцию с массивом, содержащим 2 параметра _fnc = {params ["_parametr1","_parametr2"];}; //с помощью params мы сразу создаем две переменные и присваиваем им значения параметров переданных в функцию
Теперь на практическом примере покажу, как использовать функции. Например нам нужна функция, которая будет принимать 3 значения, первые два значения складывать, а затем результат умножать на третье значение и в конце возвращать нам результат.
Пример:
//для облегчения визуального восприятия код функции можно писать на разных строках _fnc = { params ["_a","_b","_c"]; //принимаем параметры и присваиваем переменным _res = (_a + _b) * _c; //производим операцию _res //возвращаем результат }; _a = 2; _b = 5; _c = 3; _res = [_a,_b,_c] call _fnc; //теперь переменная _res = 21
Если же что-то непонятно, то можно спросить / уточнить в нашем Discord канале