Tipos de datos
Forja es tipado estáticamente con inferencia de tipos. No necesitás declarar el tipo siempre, pero podés hacerlo si querés mayor claridad.
Tabla de tipos
| Tipo Forja | Tipo Rust | Descripción | Ejemplo |
|---|---|---|---|
Entero | i64 | Entero con signo (64 bits) | 42, -10 |
Decimal | f64 | Punto flotante (64 bits) | 3.14, -0.5 |
Texto | String | Cadena UTF-8 | "Hola" |
Booleano | bool | Valor lógico | verdadero, falso |
nulo | () | Valor nulo / unit | nulo |
[T] | Vec<T> | Arreglo dinámico | [1, 2, 3] |
{K: V} | HashMap<K, V> | Mapa / diccionario | {"clave": "valor"} |
Tipo | enum | Algebraico (con tipo) | Opcion = Algo | Nada |
Booleanos en español
En lugar de true / false, Forja usa palabras en español:
🔘 Valores booleanos
variable activo = verdadero
variable inactivo = falso
variable es_mayor = edad >= 18 // resultado: verdadero o falso Literales numéricos
🔢 Números
variable entero = 42 // Entero (i64)
variable decimal = 3.14 // Decimal (f64)
variable negativo = -10 // Entero negativo Literales de texto
📝 Strings
variable saludo = "Hola mundo"
// Caracteres de escape
variable multilinea = "Línea 1\nLínea 2"
variable tabulado = "Col1\tCol2" Arreglos
📦 Colecciones
variable numeros = [1, 2, 3, 4, 5]
variable nombres = ["Ana", "Juan", "Pedro"]
// Acceso por índice
numeros[0] // → 1
// Longitud
numeros.length() // → 5
// Modificar
numeros[2] = 99 Mapas (diccionarios)
🗺️ Mapas
variable persona = {"nombre": "Ana", "edad": 30}
// Acceso por clave
persona["nombre"] // → "Ana"
// Modificar valor
persona["edad"] = 31 Tipos algebraicos (enums)
Forja permite definir tipos algebraicos con la palabra clave tipo. Son ideales para representar datos que pueden tomar diferentes formas.
📐 Sintaxis
tipo Nombre = Variante1 | Variante2 | Variante3(Tipo1, Tipo2) 🎯 Ejemplos
// Opción: puede ser Algo (con valor) o Nada
tipo Opcion = Algo | Nada
// Resultado: Exito con valor, o Error con mensaje
tipo Resultado = Exito(Entero) | Error(Texto)
// Color: variantes sin datos extra
tipo Color = Rojo | Verde | Azul Anotaciones explícitas
Cuando querés ser específico con los tipos:
📝 Tipado explícito
variable nombre: Texto = "Ana"
variable edad: Entero = 25
variable altura: Decimal = 1.75
constante activo: Booleano = verdadero Equivalencia con Rust
| Forja | Rust |
|---|---|
Entero | i64 |
Decimal | f64 |
Texto | String |
Booleano | bool |
nulo | () |
[valor, ...] | vec![valor, ...] |
{"k": v} | HashMap |
tipo X = A | B | enum X { A, B } |