Lua - Funciones
Una función es un grupo de declaraciones que juntas realizan una tarea. Puede dividir su código en funciones separadas. La forma de dividir su código entre las diferentes funciones depende de usted, pero lógicamente la división suele ser única, es decir, cada función realiza una tarea específica.
El lenguaje Lua proporciona numerosos métodos integrados que su programa puede llamar. Por ejemplo, métodoprint() para imprimir el argumento pasado como entrada en la consola.
Una función se conoce con varios nombres como método, subrutina, procedimiento, etc.
Definición de una función
La forma general de una definición de método en el lenguaje de programación Lua es la siguiente:
optional_function_scope function function_name( argument1, argument2, argument3........,
argumentn)
function_body
return result_params_comma_separated
end
Una definición de método en el lenguaje de programación Lua consta de un encabezado de método y un cuerpo de método . Aquí están todas las partes de un método:
Optional Function Scope- Puede usar la palabra clave local para limitar el alcance de la función o ignorar la sección de alcance, lo que la convertirá en una función global.
Function Name- Este es el nombre real de la función. El nombre de la función y la lista de parámetros juntos constituyen la firma de la función.
Arguments- Un argumento es como un marcador de posición. Cuando se invoca una función, se pasa un valor al argumento. Este valor se denomina parámetro o argumento real. La lista de parámetros se refiere al tipo, orden y número de argumentos de un método. Los argumentos son opcionales; es decir, un método puede no contener ningún argumento.
Function Body - El cuerpo del método contiene una colección de declaraciones que definen lo que hace el método.
Return - En Lua, es posible devolver múltiples valores siguiendo la palabra clave de retorno con los valores de retorno separados por comas.
Ejemplo
A continuación se muestra el código fuente de una función llamada max(). Esta función toma dos parámetros num1 y num2 y devuelve el máximo entre los dos -
--[[ 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 función
Si una función va a utilizar argumentos, debe declarar las variables que aceptan los valores de los argumentos. Estas variables se denominanformal parameters de la función.
Los parámetros formales se comportan como otras variables locales dentro de la función y se crean al entrar en la función y se destruyen al salir.
Llamar a una función
Al crear una función Lua, da una definición de lo que tiene que hacer la función. Para utilizar un método, tendrá que llamar a esa función para realizar la tarea definida.
Cuando un programa llama a una función, el control del programa se transfiere a la función llamada. Una función llamada realiza la tarea definida y cuando se ejecuta su declaración de retorno o cuando se alcanza el final de su función, devuelve el control del programa al programa principal.
Para llamar a un método, simplemente necesita pasar los parámetros requeridos junto con el nombre del método y si el método devuelve un valor, entonces puede almacenar el valor devuelto. Por ejemplo
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))
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
The maximum of the two numbers is 10
The maximum of the two numbers is 6
Asignar y pasar funciones
En Lua, podemos asignar la función a variables y también podemos pasarlas como parámetros de otra función. Aquí hay un ejemplo simple para asignar y pasar una función como parámetro en 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)
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
This is my print function - ## 10 ##
This is my print function - ## 7 ##
Función con argumento variable
Es posible crear funciones con argumentos variables en Lua usando '...' como parámetro. Podemos comprender esto viendo un ejemplo en el que la función devolverá el promedio y puede tomar argumentos variables.
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))
Cuando ejecutamos el código anterior, obtendremos el siguiente resultado.
The average is 5.5