Condicionales y Lógica
If, Case y patrones de lógica anidada.
If() y Case() permiten expresar recargos, componentes opcionales, cambios por material y otras reglas dependientes del contexto.
Condición básica
If(condición; valorSiVerdadero; valorSiFalso) Ejemplos: If($width > 1000; $width * 1.1; $width) → recargo del 10 % para anchos grandes If($material == "steel"; 7.85; 2.7) → densidad según el material
Condiciones anidadas
Puede anidar llamadas a If() para reglas de varios niveles, por ejemplo precios por tramos.
If($width > 2000;
$width * 1.2;
If($width > 1000;
$width * 1.1;
$width
)
) → precio por tramosCase para múltiples ramas
Case() comprueba las condiciones en orden y devuelve el valor de la primera verdadera. Los argumentos van en pares condición;valor y un último argumento opcional es el valor por defecto si ninguna condición se cumple.
Case(condición1; valor1; condición2; valor2; ...; por_defecto) Las condiciones se comprueban en orden; Case devuelve el valor de la primera condición verdadera. El último argumento es el valor por defecto si ninguna condición se cumple (sin él, Case devuelve 0). Cada condición es una comparación (por ejemplo, $Profile = "Milan"), no un valor suelto. Ejemplo: Case($Profile = "Milan"; 13; $Profile = "Milan Slim"; 12; 0) → 13 si $Profile es "Milan", 12 si es "Milan Slim" y 0 en otro caso
Cada condición de Case() es una comparación, por ejemplo $Profile == "Milan". Case no compara su primer argumento con los valores siguientes: un texto no vacío en lugar de una condición cuenta como verdadero y Case devuelve la rama equivocada.
Patrones comunes
- Recargo: If($width > 1000; $price * 1.1; $price)
- Factor de material: If($material == "steel"; 7.85; 2.7)
- Cantidad mínima: max($count; 1)
- División segura: If($d != 0; $v / $d; 0)
- Componente opcional: If($hasDoor == 1; $doorPrice; 0)
- Varias ramas: Case($Profile = "Milan"; 13; $Profile = "Milan Slim"; 12; 0) — elección según el perfil.
Las cadenas If() muy profundas se vuelven difíciles de mantener. Prefiera Case() o divida la lógica en varias filas de cálculo.