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
| Op | Descripción | Ejemplo | Resultado |
+ | Suma / concatenación | 5 + 3 / "a" + "b" | 8 / "ab" |
- | Resta | 10 - 4 | 6 |
* | Multiplicación | 6 * 7 | 42 |
/ | División | 20 / 5 | 4 |
% | Módulo (resto) | 10 % 3 | 1 |
💡 El operador + también concatena strings: "Hola " + "mundo" → "Hola mundo"
Asignación compuesta
| Op | Descripción | Ejemplo | Equivale a |
+= | Suma acumulada | x += 1 | x = x + 1 |
-= | Resta acumulada | x -= 1 | x = x - 1 |
*= | Multiplicación acumulada | x *= 2 | x = x * 2 |
/= | División acumulada | x /= 2 | x = x / 2 |
%= | Módulo acumulado | x %= 2 | x = x % 2 |
Relacionales
| Op | Descripción | Ejemplo |
> | Mayor que | x > 5 |
< | Menor que | x < 10 |
>= | Mayor o igual | x >= 18 |
<= | Menor o igual | x <= 100 |
== | Igualdad | x == 5 |
!= | Diferente | x != 0 |
Lógicos
| Op | Descripción | Ejemplo |
&& | Y (AND) | activo && edad >= 18 |
|| | O (OR) | x == 0 || y == 0 |
! | NO (NOT) | !activo |
Referencia y acceso
| Op | Descripción | Ejemplo |
& | Referencia (préstamo inmutable) | &variable |
. | Acceso a miembro/método | objeto.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/trait | std::io, Volador::volar |
.. | Rango | 1..10 |
Precedencia de operadores
De mayor a menor precedencia. Los operadores con mayor precedencia se evalúan primero:
| Nivel | Operadores | Descripció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:
variable resultado = (2 + 3) * (10 - 5)
// resultado = 25
// Sin paréntesis sería 2 + 3 * 10 - 5 = 27