Lua - Funções

Uma função é um grupo de instruções que, juntas, executam uma tarefa. Você pode dividir seu código em funções separadas. Como você divide seu código entre diferentes funções é com você, mas logicamente a divisão geralmente única, é para que cada função execute uma tarefa específica.

A linguagem Lua fornece vários métodos integrados que seu programa pode chamar. Por exemplo, métodoprint() para imprimir o argumento passado como entrada no console.

Uma função é conhecida com vários nomes, como um método ou uma sub-rotina ou um procedimento, etc.

Definindo uma função

A forma geral de definição de um método na linguagem de programação Lua é a seguinte -

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

Uma definição de método na linguagem de programação Lua consiste em um cabeçalho de método e um corpo de método . Aqui estão todas as partes de um método -

  • Optional Function Scope- Você pode usar a palavra-chave local para limitar o escopo da função ou ignorar a seção de escopo, o que a tornará uma função global.

  • Function Name- Este é o nome real da função. O nome da função e a lista de parâmetros juntos constituem a assinatura da função.

  • Arguments- Um argumento é como um espaço reservado. Quando uma função é chamada, você passa um valor para o argumento. Esse valor é conhecido como o parâmetro ou argumento real. A lista de parâmetros se refere ao tipo, ordem e número dos argumentos de um método. Os argumentos são opcionais; ou seja, um método não pode conter nenhum argumento.

  • Function Body - O corpo do método contém uma coleção de instruções que definem o que o método faz.

  • Return - Em Lua, é possível retornar vários valores seguindo a palavra-chave return com os valores de retorno separados por vírgula.

Exemplo

A seguir está o código-fonte para uma função chamada max(). Esta função recebe dois parâmetros num1 e num2 e retorna o máximo entre os dois -

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

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

   return result; 
end

Argumentos de função

Se uma função deve usar argumentos, ela deve declarar as variáveis ​​que aceitam os valores dos argumentos. Essas variáveis ​​são chamadas deformal parameters da função.

Os parâmetros formais se comportam como outras variáveis ​​locais dentro da função e são criados na entrada na função e destruídos na saída.

Chamando uma função

Ao criar uma função Lua, você dá uma definição do que a função deve fazer. Para usar um método, você terá que chamar essa função para executar a tarefa definida.

Quando um programa chama uma função, o controle do programa é transferido para a função chamada. Uma função chamada executa a tarefa definida e quando sua instrução de retorno é executada ou quando o fim de sua função é alcançado, ela retorna o controle do programa para o programa principal.

Para chamar um método, você simplesmente precisa passar os parâmetros necessários junto com o nome do método e, se o método retornar um valor, você pode armazenar o valor retornado. Por exemplo -

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))

Quando executarmos o código acima, obteremos a seguinte saída.

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

Atribuição e aprovação de funções

Em Lua, podemos atribuir a função a variáveis ​​e também passá-las como parâmetros de outra função. Aqui está um exemplo simples para atribuir e passar uma função como parâmetro em Lua.

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)

Quando executarmos o código acima, obteremos a seguinte saída.

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

Função com argumento variável

É possível criar funções com argumentos variáveis ​​em Lua usando '...' como parâmetro. Podemos entender isso vendo um exemplo em que a função retornará a média e pode receber argumentos variáveis.

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))

Quando executarmos o código acima, obteremos a seguinte saída.

The average is	5.5