Functions in Lua can be defined anywhere in the global level of a chunk.
The syntax for function definition is:
functionfunction var ( parlist1 )
block end
When Lua pre-compiles a chunk, all its function bodies are pre-compiled, too. Then, when Lua ``executes'' the function definition, its body is stored, with type function, into the variable var.
Parameters act as local variables,
initialized with the argument values.
parlist1name , name
Results are returned using the return statement (see Section 4.4.3). If control reaches the end of a function without a return instruction, then the function returns with no results.
There is a special syntax for defining methods,
that is, functions that have an extra parameter self.
functionfunction var : name ( parlist1
) block end
Thus, a declaration like
function v:f (...)
...
end
is equivalent to
function v.f (self, ...)
...
end
that is, the function gets an extra formal parameter called self.
Notice that
the variable v must have been previously initialized with a table value.