- Ordering using andThen: f(x) andThen g(x) = g(f(x))
- Ordering using compose: f(x) compose g(x) = f(g(x))
println("Step 1: Assume a pre-calculated total cost amount") val totalCost: Double = 10 println(" Step 2: How to define a val function to apply discount to total cost") val applyDiscountValFunction = (amount: Double) => { println("Apply discount function") val discount = 2 // fetch discount from database amount - discount } println(" Step 3: How to call a val function") println(s"Total cost of 5 donuts with discount = ${applyDiscountValFunction(totalCost)}") println(" Step 4: How to define a val function to apply tax to total cost") val applyTaxValFunction = (amount: Double) => { println("Apply tax function") val tax = 1 // fetch tax from database amount + tax } println(" Step 5: How to call andThen on a val function") println(s"Total cost of 5 donuts = ${ (applyDiscountValFunction andThen applyTaxValFunction)(totalCost) }")
result:
Step 1: Assume a pre-calculated total cost amount Step 2: How to define a val function to apply discount to total cost Step 3: How to call a val function Apply discount function Total cost of 5 donuts with discount = 8 Step 4: How to define a val function to apply tax to total cost Step 5: How to call andThen on a val function Apply discount function Apply tax function Total cost of 5 donuts = 9