Funciones

Las funciones en Forja se definen con funcion y pueden retornar valores con retornar. Son el bloque fundamental para organizar tu código.

Sintaxis básica

📄 Plantilla de función
funcion nombre(param1, param2, ...) {
    // cuerpo de la función
    retornar valor  // opcional
}

Ejemplo: suma

Función que recibe dos argumentos y retorna su suma:

➕ Función con retorno
funcion suma(a, b) {
    retornar a + b
}

variable resultado = suma(3, 4)
escribir(resultado)  // → 7

Función sin retorno

Las funciones que solo ejecutan acciones no necesitan retornar:

📢 Procedimiento
funcion saludo(nombre) {
    escribir("Hola, " + nombre + "!")
}

saludo("Mundo")   // → Hola, Mundo!
saludo("Forja")   // → Hola, Forja!

Con tipo de retorno

Podés especificar el tipo de retorno con -> Tipo:

🎯 Tipado explícito
funcion suma(a: Entero, b: Entero) -> Entero {
    retornar a + b
}
💡 El tipo de retorno se indica con -> Tipo (igual que en Rust). Si no se especifica, se infiere.

Parámetros por referencia

Usá prestado para indicar que un parámetro se pasa como referencia (&T en Rust). Esto permite que la variable original siga disponible después de la llamada:

🔗 Préstamo (borrowing)
funcion mostrar(prestado valor) {
    escribir("El valor es: " + valor)
}

variable dato = 42
mostrar(dato)  // prestado, no se mueve
escribir(dato) // ✅ dato sigue disponible

Equivalencia con Rust

ForjaRust
funcion f(a, b) { ... }fn f(a: String, b: String) { ... }
funcion f(a) -> Enterofn f(a: String) -> i64
funcion f(prestado a)fn f(a: &str)
retornar exprreturn expr;