PackagesΒΆ
The package keyword tells the console that the subsequent block of code is to be declared but not loaded. Packages provide dynamic function-polymorphism in TorqueScript. In short, a function defined in a package will over-ride the prior definition of a same named function when the is activated. When the package is subsequently de-activated, the previous definition of any overridden functions will be re-asserted.
A package has the following syntax:
package package_name
{
function function_definition0()
{
// code
}
function function_definitionN()
{
// code
}
};
Some things to know:
- The same function can be defined in multiple packages.
- Only functions can be packaged.
- Datablocks cannot be packaged.
- Packages ‘stack’ meaning that deactivating packages activated prior to the currently active (s) will deactivate all packages activated prior to the being deactivated (see example below).
- Functions in a package may activate and deactivate packages.
In order to use the functions in a package, the package must be activated:
activatePackage(package_name);
Subsequently a package can be deactivated:
deactivatePackage(package_name);
First, define a function and two packages, each of which provides an alternative definition by the same name:
function testFunction()
{
echo( "testFunction() - unpackaged." );
}
package MyPackage0
{
function testFunction()
{
echo( "testFunction() - MyPackage0." );
}
};
package MyPackage1
{
function testFunction()
{
echo( "testFunction() - MyPackage1." );
}
};
Now invoke the testFunction() function from the console under three different conditions:
==> testFunction();
testFunction() - unpackaged.
==> activatePackage( MyPackage0 );
==> testFunction();
testFunction() - MyPackage0.
==> activatePackage( MyPackage1 );
==> testFunction();
testFunction() - MyPackage1.
==> deactivatePackage( MyPackage0 ); // MyPackage1 is automatically deactivated.
==> testFunction();
testFunction() - unpackaged.