Functions - nitrologic/monkey2 GitHub Wiki
@manpage Functions
Functions
Global functions
To declare a global function:
Function
Identifier [ GenericParams ] [ :
ReturnType ] (
Parameters )
...Statements...
End
ReturnType defaults to Void
if omitted.
Parameters is a comma separated list of parameter declarations.
Class methods
The syntax for declaring a class method is:
Method
Identifier [ GenericParams ] [ :
ReturnType ] (
Parameters )
[ Virtual
|Abstract|
Override``|Final
|`Override Final` ]
...Statements...
End
If a method is declared Virtual
or Abstract
, it can be overriden by methods in derived classes. Overriding methods must have the same return type and parameter types as the class method, and must be declared Override
.
If a method is declared Abstract
, no implementation may be provided (ie: no 'statements' or 'End'). Such a method must be overriden by a method in a derived class, and also makes its enclosing class implictly abstract (an abstract class cannot be instantiated).
If a method is declared Override
or Override Final
, it must override a virtual method in a base class.
If a method is declared Final
or Override Final
, it cannot be overriden by any methods in derived classes.
By default, class methods are final.
Lambda functions
To declare a lambda function:
...Lambda
[ :
ReturnType ]
(
Parameters )
...Statements...
End
...
Lambda declarations must appear within an expression, and therefore should not start on a new line.
For example:
Local myLambda:=Lambda()
Print "My Lambda!"
End
myLambda()
To pass a lambda to a function:
SomeFunc( Lambda()
Print "MyLambda"
End )
Note the closing )
after the End
to match the opening (
after SomeFunc
.
Function values
Monkey2 supports 'first class' functions.
This means function 'values' can be stored in variables and arrays, passed to other functions and returned from functions.