Учебники

Lua — Функции

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

Язык Lua предоставляет множество встроенных методов, которые может вызывать ваша программа. Например, метод print () для печати аргумента, переданного в качестве ввода в консоли.

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

Определение функции

Общая форма определения метода в языке программирования Lua выглядит следующим образом:

optional_function_scope function function_name( argument1, argument2, argument3........, 
argumentn)
function_body
return result_params_comma_separated
end

Определение метода в языке программирования Lua состоит из заголовка метода и тела метода . Вот все части метода —

  • Необязательная область действия функции. Вы можете использовать ключевое слово local, чтобы ограничить область действия функции или игнорировать раздел области действия, что сделает ее глобальной функцией.

  • Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.

  • Аргументы — Аргумент похож на заполнитель. Когда вызывается функция, вы передаете значение аргументу. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству аргументов метода. Аргументы необязательны; то есть метод может не содержать аргументов.

  • Тело функцииТело метода содержит коллекцию операторов, которые определяют, что делает метод.

  • Return — в Lua можно вернуть несколько значений, следуя ключевому слову return с возвращаемыми значениями через запятую.

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

Имя функции — это фактическое имя функции. Имя функции и список параметров вместе составляют сигнатуру функции.

Аргументы — Аргумент похож на заполнитель. Когда вызывается функция, вы передаете значение аргументу. Это значение называется фактическим параметром или аргументом. Список параметров относится к типу, порядку и количеству аргументов метода. Аргументы необязательны; то есть метод может не содержать аргументов.

Тело функцииТело метода содержит коллекцию операторов, которые определяют, что делает метод.

Return — в Lua можно вернуть несколько значений, следуя ключевому слову return с возвращаемыми значениями через запятую.

пример

Ниже приведен исходный код функции с именем max () . Эта функция принимает два параметра num1 и num2 и возвращает максимум между двумя —

--[[ function returning the max between two numbers --]]
function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

Аргументы функции

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

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

Вызов функции

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

Когда программа вызывает функцию, управление программой передается вызываемой функции. Вызываемая функция выполняет определенную задачу, и когда выполняется оператор return или когда достигается конец ее функции, она возвращает управление программой обратно в основную программу.

Чтобы вызвать метод, вам просто нужно передать необходимые параметры вместе с именем метода, и если метод возвращает значение, вы можете сохранить возвращенное значение. Например —

Live Demo

function max(num1, num2)

   if (num1 > num2) then
      result = num1;
   else
      result = num2;
   end

   return result; 
end

-- calling a function
print("The maximum of the two numbers is ",max(10,4))
print("The maximum of the two numbers is ",max(5,6))

Когда мы запустим приведенный выше код, мы получим следующий вывод.

The maximum of the two numbers is 	10
The maximum of the two numbers is 	6

Назначение и передача функций

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

Live Demo

myprint = function(param)
   print("This is my print function -   ##",param,"##")
end

function add(num1,num2,functionPrint)
   result = num1 + num2
   functionPrint(result)
end

myprint(10)
add(2,5,myprint)

Когда мы запустим приведенный выше код, мы получим следующий вывод.

This is my print function -   ##	10	##
This is my print function -   ##	7	##

Функция с переменным аргументом

В Lua можно создавать функции с переменными аргументами, используя «…» в качестве параметра. Мы можем понять это, увидев пример, в котором функция возвращает среднее значение и может принимать переменные аргументы.

Live Demo

function average(...)
   result = 0
   local arg = {...}
   for i,v in ipairs(arg) do
      result = result + v
   end
   return result/#arg
end

print("The average is",average(10,5,3,4,5,6))

Когда мы запустим приведенный выше код, мы получим следующий вывод.