ProceduresΒΆ
Procedures are an alternative to methods. Both have the same functionality, but procedures are not attached to classes or instances. They can, however, be declared inside a class. In that case, the procedure can only be called from code within the class and can reference class properties and class-specific tokens like self and super.
You can make a procedure public (usable by other scripts) by listing it in the public section of a script and giving it an export index.
You can declare temporary variables (local to the procedure) by including a &tmp token after the procedure parameters, and following it with a list of temp variable declarations.
Syntax:
(procedure (<ProcedureName> [<ParamName1> <ParamName2> ... &tmp <TempVar1> <TempVar2> ...])
<code>
)
Examples:
(procedure (SomeProc)
(PrintingProc "Hello World" 60 80)
)
; This is a public procedure so any other script can use it
(public
PrintingProc 0
)
(procedure (PrintingProc String X Y &tmp result)
(= result (+ 1 2 3))
(Display String dsCOORD X Y)
)
; An example of using it with a class
(class SomeClass
(properties
top 20
left 0
bottom 100
right 40
)
(method (someMethod)
(someProc)
)
(procedure (someProc)
(= top 50) ; sets SomeClass:top to 50
(= right 100) ; sets SomeClass:right to 100
)
)