Search⌘ K

Solution: Perform the Calculation

Explore how to create a D function that accepts a variable number of Calculation parameters. Learn to use slices and a final switch statement to handle operations like add, subtract, multiply, and divide. This lesson helps you implement flexible functions that process multiple calculations and collect results efficiently.

We'll cover the following...

Solution #

D
import std.stdio;
enum Operation { add, subtract, multiply, divide }
struct Calculation {
Operation op;
double first;
double second;
}
double[] calculate(Calculation[] calculations...) {
double[] results;
foreach (calculation; calculations) {
final switch (calculation.op) {
case Operation.add:
results ~= calculation.first + calculation.second;
break;
case Operation.subtract:
results ~= calculation.first - calculation.second;
break;
case Operation.multiply:
results ~= calculation.first * calculation.second;
break;
case Operation.divide:
results ~= calculation.first / calculation.second;
break;
}
}
return results;
}
void main() {
writeln(calculate(Calculation(Operation.add, 1.1, 2.2),
Calculation(Operation.subtract, 3.3, 4.4),
Calculation(Operation.multiply, 5.5, 6.6),
Calculation(Operation.divide, 7.7, 8.8)));
}

Solution explanation

  • Line 11:
    double[]
...