Definición de funciones
Declaración básica
Sección titulada «Declaración básica»texto saludar(texto nombre) { retornar "Hola " + nombre}- Las funciones requieren tipo de retorno explícito (
vaciocuando no devuelven valor). - El cuerpo se define entre llaves.
retornarfinaliza la ejecución y devuelve el valor indicado.
Funciones sin retorno
Sección titulada «Funciones sin retorno»vacio mostrar_mensaje(texto mensaje) { consola.mostrar(mensaje)}Funciones mutando parámetros
Sección titulada «Funciones mutando parámetros»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}Funciones recursivas
Sección titulada «Funciones recursivas»entero factorial(entero n) { si (n == 0) { retornar 1 } retornar n * factorial(n - 1)}Retornar objetos
Sección titulada «Retornar objetos»Las funciones pueden devolver instancias de objetos o listas.
// Función que devuelve un númeronúmero sumar(número a, número b) { retornar a + b}
// Función que devuelve un enteroentero multiplicar(entero a, entero b) { retornar a * b}
// Función que devuelve un textotexto concatenar(texto a, texto b) { retornar a + b}
// Función que devuelve un valor lógicolog es_par(entero valor) { retornar valor % 2 == 0}
// Función que devuelve un JSONjsn 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 enteroslista<entero> obtener_numeros() { retornar [1, 2, 3, 4, 5]}
// Función que devuelve una lista no tipada de diferentes tiposlista obtener_datos_lista_no_tipada() { retornar [1, "texto", verdadero, 3.14, [1, 2, 3]]}
// Definir un objetoobjeto 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 DefinicionUsuarioDefinicionUsuario crear_usuario(texto nombre, entero edad) { retornar nuevo DefinicionUsuario(nombre, edad)}Sobrecarga y nombres
Sección titulada «Sobrecarga y nombres»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.
Buenas prácticas
Sección titulada «Buenas prácticas»- Usa nombres descriptivos en español siguiendo
camelCaseosnake_case. - Valida parámetros al inicio de la función y usa
lanzarpara notificar errores. - Mantén funciones cortas; extrae lógica en funciones auxiliares cuando sea necesario.