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