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 paradigm here is, that a function calculates and returns something whereas a procedure executes some action without a result.
Usage¶
Functions in Spice can be defined like this:
| Spice | |
|---|---|
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.
Example with default parameter value¶
Here, the second argument is one with a default value attached.
| Spice | |
|---|---|
This function could get called like so:
The implicit result variable¶
Inside any function, Spice provides an implicit variable called result that holds the return value. You can assign
to it at any point and return early with a bare return, or simply fall off the end of the function:
| Spice | |
|---|---|
This is equivalent to using an explicit return expression, but can be more readable when the return value is built
up across multiple branches.
Function overloading¶
Multiple functions may share the same name as long as their parameter lists differ. The compiler picks the best match at the call site:
| Spice | |
|---|---|
Overloads can also differ in the number of parameters or in whether parameters have default values.
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.