Retorno de valores
return
Las funciones pueden acabar en cualquier momento retornando algún valor con la instrucción return seguido del valor a retornar. Si no se especifica que valor retornar, entonces se retorna null.
Si una función no retorna nada, acabará en la última línea ejecutable y acabará con return, lo cual implica devolver null.
El valor de retorno puede ser recogido desde donde se ha llamado para asignárselo como valor a una variable o utilizarlo directamente. No es necesario que la instrucción return sea la última de la función y se puede utilizar tantas veces como sea necesario.
En el siguiente ejemplo se llama a una función que devuelve la suma de los dos parámetros. El valor devuelto en un caso se guarda en una variable local llamada resultado y en el segundo caso, se imprime el resultado de la función directamente.
def main
local resultado
// Se guarda primero el valor de la suma y después se pinta
resultado = sumador(1,7)
println resultado
// También es posible imprimir el resultado directamente
println sumador(2,3)
end
def sumador(a, b)
return a + b
end
El resultado es:
8 5
En el siguiente ejemplo se llama a una función que devuelve el literal "si" o "no" si el número pasado como parámetro a la función es mayor que 5. En los dos casos se imprime el resultado de la función directamente en una misma sentencia println.
def main
println "¿Es 2 > 5? "+esMayorQueCinco(2)+"!, y ¿20 > 5? "+esMayorQueCinco(20)+"!"
end
def esMayorQueCinco(numero)
if numero > 5
return "si"
else
return "no"
endif
end
El resultado es:
¿Es 2 > 5? si!, y ¿20 > 5? no!
rtrue / rfalse
Las sentencias especiales rtrue y rfalse equivalen a retornar true y false, respectivamente.
stop / continue
Es posible también finalizar una función con las instrucciones especiales stop y continue, las cuales retornan los valores especiales #stop y #continue respectivamente. Estos valores especiales valen true y false, respectivamente, y sirven para mejorar considerablemente la lectura del código.
def main
local conocido
conocido = sonIguales(2,3)
if conocido == #stop
println "Son distintos."
elseif conocido == #continue
println "Son iguales."
endif
end
def sonIguales(op1, op2)
if op1 == op2
continue
endif
stop
end
El resultado es:
Son distintos.
Equivalencias
| return valor | Finaliza la función y devuelve el valor especificado |
|---|---|
return | return null |
continue | return #continue |
stop | return #stop |
rtrue | return true |
rfalse | return false |