Nyx con Ejemplos

Functions

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.

Código

// 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
}

Salida

3 + 4 = 7
Hola, Mundo!
Buenos dias, Nyx!
42 es positivo
-5 es negativo
0 es cero

Explicación

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.

← Anterior Siguiente →

Source: examples/by-example/03-functions.nx