Private Function (private)

Define a private function block

Description

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.

Usage

private name { code-block }

Examples

# 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."
}

Detail

Allowed characters

Private names can only include any characters apart from dollar ($). This is to prevent functions from overwriting variables (see the order of preference below).

Undefining a private

Like all other definable states in Murex, you can delete a function with the bang prefix !private

Order of preference

There is an order of precedence for which commands are looked up:

  1. 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.
  2. test and pipe functions also alter the behavior of the compiler and thus are executed ahead of any scripts.
  3. 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 via fexec).
  4. Aliases - defined via alias. All aliases are global.
  5. Murex functions - defined via function. All functions are global.
  6. Variables (dollar prefixed) which are declared via global, set or let. Also environmental variables too, declared via export.
  7. globbing: however this only applies for commands executed in the interactive shell.
  8. Murex builtins.
  9. External executable files

You can override this order of precedence via the fexec and exec builtins.

Synonyms

See Also


This document was generated from builtins/core/structs/function_doc.yaml.

This site's content is rebuilt automatically from murex's source code after each merge to the master branch. Downloadable murex binaries are also built with the website.

Last built on Tue Dec 10 22:56:57 UTC 2024 against commit 60f05a260f05a227caf73dd5b3478e3cb3f4bb24e46745b.

Current version is 6.4.1005 (develop) which has been verified against tests cases.