Las funciones en Nyx se definen con fn, reciben parámetros tipados y declaran su tipo de retorno después de ->. Admiten valores de parámetro por defecto, lo que hace más limpios los sitios de llamada cuando existe un valor por defecto razonable.
// Funciones: parámetros, valor de retorno, default parameters fn suma(a: int, b: int) -> int { return a + b } fn saludar(nombre: String, saludo: String = "Hola") -> String { return saludo + ", " + nombre + "!" } fn describir(n: int) -> String { if n > 0 { return "positivo" } if n < 0 { return "negativo" } return "cero" } fn main() -> int { let resultado: int = suma(3, 4) print("3 + 4 = " + int_to_string(resultado)) print(saludar("Mundo")) print(saludar("Nyx", "Buenos dias")) print("42 es " + describir(42)) print("-5 es " + describir(-5)) print("0 es " + describir(0)) return 0 }
3 + 4 = 7 Hola, Mundo! Buenos dias, Nyx! 42 es positivo -5 es negativo 0 es cero
Cómo funciona
Las funciones se declaran con la palabra clave fn seguida del nombre de la función, una lista de parámetros entre paréntesis y el tipo de retorno. Cada parámetro tiene un nombre y un tipo separados por dos puntos. El cuerpo de la función es un bloque encerrado entre { }.
Los valores de parámetro por defecto se escriben como param: Type = value. Cuando quien llama omite ese argumento, se usa el valor por defecto automáticamente. En saludar, llamar a saludar("Mundo") usa el saludo por defecto "Hola", mientras que saludar("Nyx", "Buenos dias") lo reemplaza.
La función incorporada int_to_string convierte un entero a su representación en cadena. Nyx no coacciona tipos de forma implícita, así que hay que convertir explícitamente al construir cadenas a partir de valores que no son strings.
Las funciones pueden tener múltiples sentencias return. El compilador exige que todos los caminos devuelvan un valor del tipo declarado — cualquier rama que termine sin devolver un valor produce un error de compilación.