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(condition; valueIfTrue; valueIfFalse) Examples: If($width > 1000; $width * 1.1; $width) → add 10% surcharge If($material == "steel"; 7.85; 2.7) → density by 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
)
) → tiered pricingCase para múltiples ramas
Case() funciona como un switch: una expresión, pares valor/resultado y un valor por defecto al final.
Case(expr; val1; result1; val2; result2; ...; default) First argument is the expression to match, then pairs of value;result. The last argument is the default when no value matches. Example: Case($Profile; "Milan"; 13; "Milan Slim"; 12; 0) → returns 13 when $Profile is "Milan", 12 when "Milan Slim", 0 otherwise
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)
Las cadenas If() muy profundas se vuelven difíciles de mantener. Prefiera Case() o divida la lógica en varias filas de cálculo.