Las funciones pueden realizar acciones. Algo que una función puede hacer es devolver un valor cuando la llamas. El valor es el resultado.
Por ejemplo, cuando llamas a GetRandomInt(1, 10)
, esperas obtener un número entero aleatorio entre 1 y 10.
Para cambiar el tipo de valor que deseas de tu función, cambiarías el tipo en la firma de función. Por ejemplo:
GetNumberOfMousetrapsYouCanAfford() : int
En este ejemplo, GetNumberOfMousetrapsYouCanAfford()
tiene el tipo de valor devuelto int
, así que cada vez que llames a GetNumberOfMousetrapsYouCanAfford()
en el código, puedes esperar que devuelva un entero.
GetNumberOfMousetrapsYouCanAfford() : float
Por otro lado, si cambiaste el tipo a float
, devolvería un tipo de valor distinto.
Cuando la función tiene especificado un tipo de valor devuelto, el cuerpo de la función (bloque de código) tiene que producir un resultado que coincida con ese tipo. Si eso no sucede, el código no se compilará, lo cual significa que existe un error del compilador. ¿Estás listo para saber cómo evitarlo?
Resultados y valores devueltos
El resultado es el valor que devuelve una función cuando se ejecuta (run).
En la Lección 2 se habló de las palabras clave, que son palabras especiales integradas en Verse que tienen acciones muy específicas asociadas.
En Verse, return (devolver) también es una palabra clave que le indica a una función que proporcione el valor que resulta de la expresión que le sigue a la palabra clave devuelta.
MyFunction() : int =
return 5
OnBegin<override>()<suspend> : void =
MyFunction() # result is 5
En el ejemplo anterior, este código devolverá un valor de 5
cuando se llame a MyFunction()
.
Excluir la palabra return
no interrumpirá la función, pero es una buena práctica para incluir return
de manera explícita. Si deseas saber más sobre este tema, consulta Funciones.
Valores devueltos tempranos
Cuando el programa ejecuta una expresión return
, el programa saldrá del bloque de código de la función de inmediato. Esto significa que si colocas una expresión return
antes de otro código, el código que sigue no se ejecutará. Esto puede ser útil para salir de una función con anticipación cuando se cumple una condición especificada.
La siguiente función actualiza la variable Coins
de acuerdo con CoinsPerMouseTrap
. Sin embargo, la variable Coins
debe establecerse en un valor positivo para comprar una ratonera. Si Coins
es negativo, la función imprime un mensaje de error y se ejecuta la expresión return de inmediato, porque no hay motivo para ejecutar el resto del código en el cuerpo de la función.
En realidad, sin la expresión return, la función disminuiría el valor de Coins
de manera incorrecta y nunca indicaría que Coins
fue negativo.
var Coins : int = -10
CoinsPerMousetrap : int = 100
BuyMousetrap() : void =
if (Coins < 0):
Print("Error: Monedas establecidas en valor negativo")
return
set Coins = Coins - CoinsPerMousetrap
Print(“¡Compraste la ratonera! You have {Coins} coins left.”)

Salir de una función de manera anticipada con return
puede generar errores lógicos, así que es importante usarla con cuidado. Por ejemplo, como return
se ejecutará antes de Print(“¡Compraste la ratonera! You have {Coins} coins left.”)
en el siguiente código, la función nunca imprimirá el nuevo valor de Coins
.
var Coins : int = 500
CoinsPerMousetrap : int = 100
BuyMousetrap() : void =
if (Coins < 0):
Print("Error: Monedas establecidas en valor negativo")
return
set Coins = Coins - CoinsPerMousetrap
return
Print(“¡Compraste la ratonera! You have {Coins} coins left.”)
Si tienes una expresión return
temprana en el código, el código aún se compilará, pero Visual Studio Code te advertirá que las expresiones después de return
no se ejecutarán.
Tipo void para las funciones sin resultado útil
A veces deseas un resultado; otras veces, no.
Si recuerdas los tipos de la Lección 2, es posible que también recuerdes que cada tipo necesita una clase particular de valor. A continuación, se proporciona una lista muy breve. Verse usa muchos tipos, pero estos son los más comunes y la base para usar variables y constantes.
Tipo | Qué hace | Valores |
---|---|---|
logic |
Este tipo de valor solo puede ser true o false. | true / false |
int |
Un entero es un número entero (no una fracción), e int es la abreviatura en inglés de entero. |
Números enteros |
float |
Este tipo es para valores que no son enteros, como las fracciones. | Números con decimales |
string |
Este tipo es para cualquier tipo de texto. Pueden ser letras, números, puntuación, espacios e incluso emoticonos. 😻 | Letras, números, puntuación, espacios, emoticonos |
Al crear una función que no requiere generar un resultado, puedes establecer el tipo de valor devuelto de la función en void
.
Esto significa que la última expresión del bloque de código puede producir un resultado de cualquier tipo sin generar un error de compilación porque el tipo de la función está establecido en void.
Aún puedes usar la palabra clave return
para funciones que tienen un tipo void, solo que no tienes que proporcionar un valor con la palabra clave return
.
Resumen
- El resultado es lo que obtienes de una función cuando la llamas.
- En un bloque de código, la última expresión producirá el resultado.
- Para cambiar el tipo de valor en una función, cambiarías el tipo en la firma de función.
- Return es una palabra clave que le indica a una función que proporcione el valor que resulta de la expresión que le sigue.
- Un valor devuelto temprano es cuando la palabra clave return se usa en un bloque de código antes del final del bloque. Esto provocará que el programa salga de ese bloque de código de inmediato, sin ejecutar el resto del código en el bloque.
- Void es un tipo que dice que el valor de la función no se usará en ningún otro lado. O tal vez dice que simplemente no vale la pena. Puedes usar void como el tipo para una función que no necesita producir un resultado.