Pattern Matching: coincidir / caso
Forja soporta pattern matching con coincidir y caso. Te permite evaluar un valor contra múltiples patrones y desestructurar tipos algebraicos, tuplas y valores literales.
💡 Analogía: Es un
si súper-cargado que pregunta “¿esto se ve como...?” en lugar de solo “¿es mayor que 5?”.Sintaxis básica
📐 Estructura
coincidir (expresión) {
caso patrón1 → {
// código si coincide con patrón1
}
caso patrón2 → {
// código si coincide con patrón2
}
} Coincidir con valores
El caso más simple: comparar contra valores concretos o rangos:
🔢 Números
variable dia = 3
coincidir (dia) {
caso 1 → {
escribir("Lunes")
}
caso 2 → {
escribir("Martes")
}
caso 3 → {
escribir("Miércoles")
}
caso _ → {
escribir("Fin de semana")
}
}
// → Miércoles Tipos algebraicos (enums)
Podés desestructurar variantes de un tipo definido con tipo:
📦 Enums
tipo Resultado = Exito(Entero) | Error(Texto)
variable r = Exito(200)
coincidir (r) {
caso Exito(codigo) → {
escribir("OK: " + codigo)
}
caso Error(msg) → {
escribir("Falló: " + msg)
}
} Patrones múltiples y comodín
Podés combinar patrones con | y usar _ como comodín:
🔀 Pipes y wildcard
coincidir (nota) {
caso 10 | 9 → {
escribir("Excelente")
}
caso 8 | 7 → {
escribir("Bueno")
}
caso _ → {
escribir("Reprobar")
}
} Equivalencia con Rust
| Forja | Rust |
|---|---|
coincidir (x) { caso ... } | match x { ... } |
caso 1 → { ... } | 1 => { ... } |
caso _ → { ... } | _ => { ... } |
caso Algo(n) → { ... } | Algo(n) => { ... } |
caso 1 | 2 → { ... } | 1 | 2 => { ... } |