Skip to content

Definition of functions

texto saludar(texto nombre) {
retornar "Hola " + nombre
}
  • Las funciones requieren tipo de retorno explícito (vacio cuando no devuelven valor).
  • El cuerpo se define entre llaves.
  • retornar finaliza la ejecución y devuelve el valor indicado.
vacio mostrar_mensaje(texto mensaje) {
consola.mostrar(mensaje)
}

Los parámetros son inmutables por defecto. Para permitir modificación se usa la palabra var dentro de la firma.

texto agregar_sufijo(texto var base) {
base += " agregado"
retornar base
}
entero factorial(entero n) {
si (n == 0) {
retornar 1
}
retornar n * factorial(n - 1)
}

Las funciones pueden devolver instancias de objetos o listas.

// Función que devuelve un número
número sumar(número a, número b) {
retornar a + b
}
// Función que devuelve un entero
entero multiplicar(entero a, entero b) {
retornar a * b
}
// Función que devuelve un texto
texto concatenar(texto a, texto b) {
retornar a + b
}
// Función que devuelve un valor lógico
log es_par(entero valor) {
retornar valor % 2 == 0
}
// Función que devuelve un JSON
jsn obtener_datos() {
retornar {
nombre: "Quetzal",
version: "0.0.2",
tipos_soportados: ["entero", "número", "texto", "log", "lista", "jsn"]
}
}
// Función que devuelve una lista tipada de enteros
lista<entero> obtener_numeros() {
retornar [1, 2, 3, 4, 5]
}
// Función que devuelve una lista no tipada de diferentes tipos
lista obtener_datos_lista_no_tipada() {
retornar [1, "texto", verdadero, 3.14, [1, 2, 3]]
}
// Definir un objeto
objeto DefinicionUsuario {
privado:
texto nombre
entero edad
publico:
DefinicionUsuario(texto nombre, entero edad){
ambiente.nombre = nombre
ambiente.edad = edad
}
texto obtener_nombre() {
retornar ambiente.nombre
}
entero obtener_edad() {
retornar ambiente.edad
}
}
// Función que retorna un objeto de tipo DefinicionUsuario
DefinicionUsuario crear_usuario(texto nombre, entero edad) {
retornar nuevo DefinicionUsuario(nombre, edad)
}

Actualmente Quetzal no admite sobrecarga de funciones; cada nombre debe ser único en el mismo ámbito. Puedes agrupar comportamientos relacionados en módulos u objetos.

  • Usa nombres descriptivos en español siguiendo camelCase o snake_case.
  • Valida parámetros al inicio de la función y usa lanzar para notificar errores.
  • Mantén funciones cortas; extrae lógica en funciones auxiliares cuando sea necesario.