Функция – это подпрограмма, которая запускается для выполнения определенного действия.

Функции используются для выполнения часто встречающихся действий, выделяя программный код в отдельный блок. Функции облегчают чтение кода и структурируют его. Запустить выполнение функции можно из любого места программы, неограниченное количество раз. Запуск выполнения функции называется – вызов функции. В функцию мы можем передать любые переменные. После выполнения функции получим результат, который можем записать в переменные. Функция, так же как и переменная, имеет свое имя, по этому имени мы будем вызывать функцию.

В языке программирования Lua, функция определяется оператором function. Все функции записываются перед основным кодом программы. После оператора function идет имя функции и круглые скобки. Если скобки пустые, то функция не принимает на входе ни какие переменные. Если нам необходимо передать в функцию, какие-то переменные для выполнения функции, то в скобках указываются переменные. Количество переменных в скобках, зависит от того сколько параметров мы будем передавать в функцию, для ее выполнения. Функция, после выполнения своего кода, может на выходе выдавать какие-то значения, а может и не выдавать. Если функция на выходе выдает какие-то значения, то говориться, что функция возвращает значения. Для того, что бы вернуть определенные значения на выходе функции, в конце функции пишется оператор return (возврат), и через запятую перечисляются возвращаемые переменные. Разберем все вышеперечисленное на примерах. Откроем редактор SciTE и создадим новый файл с названием «005 Функции.lua».

Пример функции, на вход которой не передаются никакие переменные. Значения на выходе так же отсутствуют. Все, что выполняет эта функция – это вывод на экран текста.

function TestFunction ()

print(«Функция, выдающая на экран эту строку»)

end

Для того чтобы вызвать функцию пропишем одну строку, содержащую название функции с круглыми скобками в конце.

TestFunction()

Запустим скрит.

Функция вызвана и выполнена, на экране мы видим текст «Функция, выдающая на экран эту строку».

В языке Lua функции должны располагаться выше основного кода программы. При выполнении скрипта код читается построчно, начиная с первой строки. Получается следующее – компьютер, с начала, должен прочитать и запомнить название всех имеющихся функций, чтобы в последствии, когда мы вызовем функцию, обратиться к нужной и выполнить ее код.

Функция, может принимать на вход значение переменных, обрабатывать их, прописанным в ней методом, далее совершать действие или возвращать значение переменных. Пример функции, принимающей на вход значения переменных и выводящей на экран их сумму. Обратите внимание имена переменных в коде программы и в коде функции могут различаться, т.е. мы передаем в функцию значения указанных переменных, эти значения присваиваются переменным, прописанным в функции и далее в коде функции, уже используются свои имена переменных. Добавим в наш файл «005 Функции.lua» новую функцию:

function TestFunction_In(a, b)

print(«Функция принимающая переменные. a + b =», a + b)

end

Далее. Сейчас в нашем скрипте нет переменных, которые мы бы могли передать в функцию. Объявим их.

local x = 3
local z = 2

Вызовем функцию TestFunction_In() и передадим в нее значение переменных «x» и «z».

TestFunction_In(x, z)

Значения переменных передаются в функцию последовательно, т.е. значение переменной «x» будет присвоено переменной «a», значение переменной «z» будет присвоено переменной «b». Выполним скрипт.

В результате мы получи вывод на экран текста и значение сумму двух переданных переменных.

Функция может возвращать одно или несколько значений. Рассмотрим пример функции, которая принимает на вход два значения, а возвращает три. Напишем функцию, которая, сначала суммирует входные значения переменных, а потом умножает каждое входное значения на 10. Обратите внимание имена переменных внутри функции, могут совпадать с именами переменных внутри основного кода программы.

Создадим новую функцию

function TestFunction_InOut(a, b)

— Внутри функции объявим переменные «y», «x», «z» и пропишем в переменные необходимые арифметические действия.

local y = a + b
local x = a * 10
local z = b * 10

— Вернем из функции необходимые переменные.

return y, x, z

end

Функция готова, теперь необходимо ее вызвать. Поскольку функция возвращает значения, нам необходимы переменные, в которые мы будем записывать значения, вернувшиеся из функции. Две переменные у нас уже есть это «x» и «z», объявим третью с именем «y», объявим ее пустой.

local y

Вызовем функцию TestFunction_InOut(). Передадим в нее значения переменных «x» и «z», и запишем вернувшиеся значения в переменные «y», «x», «z».

Вызов функции, выглядит следующим образом:

y, x, z = TestFunction_InOut(x, z)

(Эта строка означает следующее – сначала передать в функцию TestFunction_InOut() значения «x», «z» далее, записать результат выполнения функции в переменные «y», «x», «z».) Для наглядности добавим строку, которая выводит на экран конечное значение переменных.

print(«Функция принимающая и возвращающая переменные. «..»y = «..y, «x = «..x, «z = «..z)

Запустим скрипт.­

В результате выполнения функции, получим переменную «y» равную сумме двух переданных переменных, переменную «x» умноженную на 10 и переменную «z» умноженную на 10.

В случае передачи или возврата из функции большого количества переменных, особое внимание стоит уделить последовательности записи переменных, чтобы исключить ошибки.

Код функции function TestFunction_InOut(a, b) можно упростить. В нем можно не использовать переменные, а вычисления производить прямо в строке return.

Пример.

function TestFunction_InOut(a, b)

return a + b, a*10, b*10

end

Результат выполнения функции будет идентичен.

Вы можете получить готовые коды скриптов с этого сайта.
Не тратьте свое время на ввод символов с клавиатуры, потратьте его лучше на создание своих собственных торговых роботов из блоков уже готового кода.