<#function name param1 param2 ... paramN> ... <#return returnValue> ... </#function>
- name: name of method variable (not expression)
- param1, param2, ...etc.: the name of the local variables store the parameter values (not expression), optionally followed by = and the default value (that's an expression).
- paramN, the last parameter, may optionally include a trailing ellipsis (...), which indicates the macro takes a variable number of parameters. Local variable paramN will be a sequence of the extra parameters.
- returnValue: the expression that calculates the value of the method call.
The return directive can be used anywhere and for any times between the <#function ...> and </#function>.
Parameters without default value must precede parameters with default value (paramName=defaultValue).
Creates a method variable (in the current namespace, if you know namespace feature). This directive works in the same way as the macro directive, except that return directive must have a parameter that specifies the return value of the method, and that attempts to write to the output will be ignored. If the </#function> is reached (i.e. there was no return returnValue), then the return value of the method is an undefined variable.
Example 1: Creating a method that calculates the average of two numbers:
Example 2: Creating a method that calculates the average of multiple numbers: