Functions

Spice distinguishes strictly between functions and procedures. Functions are used to return something, that was calculated from a given input. Other than procedures, functions must have a return value. The paradigma here is, that a function calculates and returns something whereas a procedure executes some action without a result.

Functions in Spice can be defined like this:

f<double> functionName() {
    ... // Do something
    return 5.6; // Return some value anywhere in the function body
}

Spice also allows you to pass arguments to a function. This arguments may also have default values, which can then be omitted when calling the function.

Note

Optional arguments have to go after the mandatory arguments in the function head.

Here, the second argument is one with a default value attached.

f<int> demoFunction(string arg1, double arg2 = 5.89) {
    ... // Do something with the arguments
    result = -4;
}

Theis procedure could get called like so:

demoFunction("input");
demoFunction("another input", 1.0);

Tip

If you only want to execute some actions and don't need to return a value to the caller, please consider to use procedures instead of functions.