Definicion de funciones y parametros
Nombre de la función: def
Una función se define con la palabra clave def seguido del nombre que se le desea dar a la función y, opcionalmente, los parámetros que recibe entre paréntesis. Después finaliza con la palabra clave end, la cual indica que el código de la función ha terminado. Es importante que el nombre de la función no pertenezca a una de las palabras reservadas.
// Ejemplo de función que imprime el texto "Hola mundo"
def main
println "Hola mundo"
end
Es posible dar más de un nombre a una función, simplemente separándolos por comas:
// Se crean varias funciones con el mismo código
def main, holaMundo, saluda
println "Hola mundo"
end
No es realmente obligatorio indicar el fin de la función con end. El compilador entiende que el código de una función ha terminado cuando se encuentra con la definición de una nueva función, o con una definición de objeto. Aún así, se recomienda cerrar siempre las funciones con end para mayor claridad.
// Ejemplo de función que imprime el texto "Hola mundo"
def main
println "Hola mundo"
Nota: la función con el nombre especial main es la función que el sistema busca y ejecuta cuando se ejecuta un programa entero.
Parámetros
Las funciones pueden recibir parámetros de entrada entre paréntesis. Un parámetro es un valor que se envía a la función en el momento de su llamada. Al recibir este valor, se crea una variable local con el nombre de este parámetro, el cual será accesible desde el código de la propia función. Por esta razón, no puede haber variables locales y parámetros con el mismo nombre.
// Función con parámetros de entrada
def nombreFuncion(parametro)
println "El parámetro recibido es: "+parametro
end
Funciones en una línea
También es posible crear una función de una sola línea de código en la misma línea donde se define el nombre de la función. Para hacer esto, añadir el código después de dos puntos :
// Función sin parámetros y sin usar paréntesis def saludame1 : println "Hola" // Función sin parámetros, con los paréntesis vacíos def saludame2(): println "Hola" // Función con los parámetros de entrada entre paréntesis def nombreFuncion(parametro): println "El parámetro recibido es: "+parametro // Se crean varias funciones con el mismo código def saludame1, saludame2, saludame3() : println "Hola"
La característica principal estas funciones que retornan automáticamente el resultado de su única línea:
// Estas dos funciones son equivalentes def dimeTuNombre: return "Alberto" def dimeTuNombre2: "Alberto"
Variables locales: local
Las funciones pueden gestionar sus propias variables locales. Estas variables solo son visibles desde dentro de la función y su vida acaba cuando finaliza la función donde han sido creadas. Para definir una o más variables locales es necesario utilizar la instrucción local. Podemos definir tantas sentencias local como se deseen, la única condición es que vayan situadas antes que cualquier código ejecutable.
Ejemplo de función con varias variables locales
def main
local mensaje
local palabra1, palabra2
palabra1 = "Hola"
palabra2 = "mundo"
mensaje = palabra1 + " " + palabra2
println mensaje
end
Funciones que empiezan por #
Es posible dar nombre a funciones que empiezan con el carácter #. La condición para esto es que la función no tenga parámetros y puede llamarse sin paréntesis como si no se tratara de una función. Es importante que el nombre de la función no pertenezca a una de las palabras reservadas.
def main
// Llamada sin parámetros ni paréntesis
println #miNombre
end
// No se especifican parámetro de entrada
def #miNombre
return "Alberto"
end