Nyx by Example

Functions

Functions in Nyx are defined with fn, take typed parameters, and declare their return type after ->. They support default parameter values, making call sites cleaner when a sensible default exists.

Code

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

Output

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

Explanation

Functions are declared with the fn keyword followed by the function name, a parenthesized parameter list, and the return type. Each parameter has a name and a type separated by a colon. The function body is a block enclosed in { }.

Default parameter values are written as param: Type = value. When a caller omits that argument, the default is used automatically. In saludar, calling saludar("Mundo") uses the default greeting "Hola", while saludar("Nyx", "Buenos dias") overrides it.

The built-in int_to_string function converts an integer to its string representation. Nyx does not coerce types implicitly, so you must convert explicitly when building strings from non-string values.

Functions can have multiple return statements. The compiler requires that all paths return a value of the declared type — any branch that falls off without returning causes a compile-time error.

← Previous Next →

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