Define a private function block
private
defines a function who's scope is limited to that module or source
file.
Privates cannot be called from one module to another (unless they're wrapped
around a global function
) and nor can they be called from the interactive
command line. The purpose of a private
is to reduce repeated code inside
a module or source file without cluttering up the global namespace.
private name { code-block }
# The following cannot be entered via the command line. You need to write
# it to a file and execute it from there.
private hw {
out "Hello, World!"
}
function tom {
hw
out "My name is Tom."
}
function dick {
hw
out "My name is Dick."
}
function harry {
hw
out "My name is Harry."
}
Private names can only include any characters apart from dollar ($
).
This is to prevent functions from overwriting variables (see the order of
preference below).
Because private functions are fixed to the source file that declares them, there isn't much point in undefining them. Thus at this point in time, it is not possible to do so.
There is an order of precedence for which commands are looked up:
-
runmode
: this is executed before the rest of the script. It is invoked by the pre-compiler forking process and is required to sit at the top of any scripts. -
test
andpipe
functions also alter the behavior of the compiler and thus are executed ahead of any scripts. -
private functions - defined via
private
. Private's cannot be global and are scoped only to the module or source that defined them. For example, You cannot call a private function directly from the interactive command line (however you can force an indirect call viafexec
). -
Aliases - defined via
alias
. All aliases are global. -
Murex functions - defined via
function
. All functions are global. -
Variables (dollar prefixed) which are declared via
global
,set
orlet
. Also environmental variables too, declared viaexport
. -
globbing: however this only applies for commands executed in the interactive shell.
-
Murex builtins.
-
External executable files
You can override this order of precedence via the fexec
and exec
builtins.
private
- Alias Pointer (
alias
): Create an alias for a command - Define Environmental Variable (
export
): Define an environmental variable and set it's value - Define Global (
global
): Define a global variable and set it's value - Define Method Relationships (
method
): Define a methods supported data-types - Define Variable (
set
): Define a variable (typically local) and set it's value - Execute External Command (
exec
): Runs an executable - Execute Shell Function or Builtin (
fexec
): Execute a command or function, bypassing the usual order of precedence. - Exit Block (
break
): Terminate execution of a block within your processes scope - Globbing (
g
): Glob pattern matching for file system objects (eg*.txt
) - Include / Evaluate Murex Code (
source
): Import Murex code from another file or code block - Public Function (
function
): Define a function block let
: Evaluate a mathematical function and assign to variable (deprecated)
This document was generated from builtins/core/structs/function_doc.yaml.