Operadores

Forja soporta los operadores clásicos de la programación, organizados por categorías. Incluye operadores aritméticos, relacionales, lógicos, de referencia, asignación compuesta y acceso.

Aritméticos

OpDescripciónEjemploResultado
+Suma / concatenación5 + 3 / "a" + "b"8 / "ab"
-Resta10 - 46
*Multiplicación6 * 742
/División20 / 54
%Módulo (resto)10 % 31
💡 El operador + también concatena strings: "Hola " + "mundo""Hola mundo"

Asignación compuesta

OpDescripciónEjemploEquivale a
+=Suma acumuladax += 1x = x + 1
-=Resta acumuladax -= 1x = x - 1
*=Multiplicación acumuladax *= 2x = x * 2
/=División acumuladax /= 2x = x / 2
%=Módulo acumuladox %= 2x = x % 2

Relacionales

OpDescripciónEjemplo
>Mayor quex > 5
<Menor quex < 10
>=Mayor o igualx >= 18
<=Menor o igualx <= 100
==Igualdadx == 5
!=Diferentex != 0

Lógicos

OpDescripciónEjemplo
&&Y (AND)activo && edad >= 18
||O (OR)x == 0 || y == 0
! / noNO (NOT)!activo / no activo
💡 Además de !, podés usar la keyword no como operador de negación lógica en español: si (no activo) { ... }

Referencia y acceso

OpDescripciónEjemplo
&Referencia (préstamo inmutable)&variable
.Acceso a miembro/métodoobjeto.campo, obj.metodo()
[]Acceso por índice (arreglos y mapas)arr[0], mapa["clave"]
->Flecha de retorno o brazo de match-> Entero, caso 1 -> "uno"
::Acceso cualificado a módulo/traitstd::io, Volador::volar
..Rango1..10
?Propagación de errores (try)valor?
⚡ Propagación de errores: El operador ? propaga errores automáticamente. Si la expresión es Error(msg), la función retorna el error. Si es Exito(valor), extrae el valor. Ideal para encadenar operaciones fallibles.

Operador ternario

El operador ternario permite expresiones condicionales en línea:

❓ Ternario
variable edad = 20
variable categoria = edad >= 18 ? "Mayor" : "Menor"
escribir(categoria) // → "Mayor"

// Se puede anidar (aunque se recomienda usar si/sino para legibilidad)
variable precio = edad > 65 ? 0 : (edad >= 18 ? 100 : 50)
OpSintaxisDescripción
? :cond ? val_si : val_noSi cond es verdadero retorna val_si, sino val_no

Precedencia de operadores

De mayor a menor precedencia. Los operadores con mayor precedencia se evalúan primero:

NivelOperadoresDescripción
1 (más alta)!, - (unarios), &Negación, negación aritmética, referencia
2*, /, %Multiplicación, división, módulo
3+, -Suma, resta
4>, <, >=, <=Comparaciones relacionales
5==, !=Igualdad y diferencia
6&&Y lógico
7 (más baja)||O lógico

Usá paréntesis ( ... ) para agrupar y forzar precedencia:

📐 Agrupación
variable resultado = (2 + 3) * (10 - 5)
// resultado = 25

// Sin paréntesis sería 2 + 3 * 10 - 5 = 27