Conditional Expressions
a-calc supports full ternary operator syntax, identical to JavaScript.
Syntax
condition ? trueValue : falseValueBasic Usage
javascript
import { calc } from "a-calc";
calc("1 > 0 ? 100 : 200"); // '100'
calc("1 < 0 ? 100 : 200"); // '200'
calc("x > 0 ? x * 2 : 0", { x: 5 }); // '10'
calc("x > 0 ? x * 2 : 0", { x: -3 }); // '0'
calc('score >= 60 ? "Pass" : "Fail"', { score: 75 }); // 'Pass'Nested Conditions
javascript
// Multi-level (like if-else if-else)
calc('score >= 90 ? "A" : (score >= 80 ? "B" : (score >= 60 ? "C" : "D"))', {
score: 85,
}); // 'B'
// Absolute value
calc("x > 0 ? x : (x < 0 ? -x : 0)", { x: -5 }); // '5'Short-Circuit Evaluation
Only the selected branch is evaluated:
javascript
// Won't trigger division by zero — falseValue not evaluated
calc("x > 0 ? x : 1/0", { x: 5 }); // '5'Combining with Other Operators
javascript
// With arithmetic
calc("(x > 0 ? x : 0) + 10", { x: 5 }); // '15'
// With logical operators
calc("(x > 0 && y > 0) ? x + y : 0", { x: 3, y: 4 }); // '7'
// With functions
calc("x > 0 ? sqrt(x) : 0", { x: 16 }); // '4'Formatting
Formatting applies when the result is a number:
javascript
calc("x > 0 ? x : 0 | =2", { x: 3.14159 }); // '3.14'Real-World Examples
Tiered Pricing
javascript
// Discount by membership level
calc("level >= 3 ? price * 0.8 : (level >= 2 ? price * 0.9 : price)", {
level: 3,
price: 100,
}); // '80'Grade Calculation
javascript
const getGrade = (score) =>
calc(
`
score >= 90 ? "A" :
(score >= 80 ? "B" :
(score >= 70 ? "C" :
(score >= 60 ? "D" : "F")))
`,
{ score },
);
getGrade(85); // 'B'Clamp Value
javascript
calc("value > max ? max : (value < min ? min : value)", {
value: 150,
min: 0,
max: 100,
}); // '100'