Namespace: Difference between revisions
(Finished overhaul) |
m (fixed typo and removed some empty lines) |
||
Line 1: | Line 1: | ||
{{TOC|side}} | {{TOC|side}} | ||
{{GVI|arma2|1.00}} | {{GVI|arma2|1.00}} | ||
A [[Namespace]] is a container for [[Variables]]. Any [[Variables#Scopes|global]] variable is always part of exactly one namespace - another namespace may contain a variable with the same [[Identifier]], but they remain two distinct independent variables. Scripts and functions are always executed in the context of some namespace. | A [[Namespace]] is a container for [[Variables]]. Any [[Variables#Scopes|global]] variable is always part of exactly one namespace - another namespace may contain a variable with the same [[Identifier]], but they remain two distinct independent variables. Scripts and functions are always executed in the context of some namespace. | ||
The default namespace is the [[missionNamespace]]. | The default namespace is the [[missionNamespace]]. | ||
== Namespaces == | == Namespaces == | ||
Line 34: | Line 32: | ||
| {{GVI|arma3|2.00}} | | {{GVI|arma3|2.00}} | ||
| [[localNamespace]] | | [[localNamespace]] | ||
| This namespace is like the [[missionNamespace]], except that its variables can not be | | This namespace is like the [[missionNamespace]], except that its variables can not be broadcasted (e.g. with [[publicVariable]]) or serialized. | ||
| style="background-color: lightgreen" | Mission duration | | style="background-color: lightgreen" | Mission duration | ||
|- | |- | ||
Line 42: | Line 40: | ||
| style="background-color: lightyellow" | Game session | | style="background-color: lightyellow" | Game session | ||
|} | |} | ||
== Namespace Serialization == | == Namespace Serialization == | ||
Only the [[missionNamespace]] is serialized, i.e. only the variables from this namespace are saved when the game is saved (e.g. with [[saveGame]]) and loaded when the game is loaded (e.g. with [[loadGame]]). This is also the reason the game will complain that one should use [[disableSerialization]] when storing UI variables in [[missionNamespace]] - UI elements are temporary and therefore exempt from serialization by default. | Only the [[missionNamespace]] is serialized, i.e. only the variables from this namespace are saved when the game is saved (e.g. with [[saveGame]]) and loaded when the game is loaded (e.g. with [[loadGame]]). This is also the reason the game will complain that one should use [[disableSerialization]] when storing UI variables in [[missionNamespace]] - UI elements are temporary and therefore exempt from serialization by default. | ||
== Scripting with Namespaces == | == Scripting with Namespaces == | ||
Line 53: | Line 49: | ||
* The [[with]]-do-construct can be used to switch the context of an entire code block to another namespace. | * The [[with]]-do-construct can be used to switch the context of an entire code block to another namespace. | ||
* The [[currentNamespace]] command can be used to obtain the namespace which the calling script is running in. | * The [[currentNamespace]] command can be used to obtain the namespace which the calling script is running in. | ||
[[Category: Data Types]] | [[Category: Data Types]] | ||
[[Category: Introduced with Arma 2 version 1.00]] | [[Category: Introduced with Arma 2 version 1.00]] |
Revision as of 17:45, 26 February 2022
A Namespace is a container for Variables. Any global variable is always part of exactly one namespace - another namespace may contain a variable with the same Identifier, but they remain two distinct independent variables. Scripts and functions are always executed in the context of some namespace.
The default namespace is the missionNamespace.
Namespaces
Game | Namespace | Description | Lifetime |
---|---|---|---|
1.00 | missionNamespace | The global namespace of the mission. Every mission has its own missionNamespace. | Mission duration |
1.00 | parsingNamespace | The global namespace attached to the Config Parser. | Game session |
1.00 | uiNamespace | The global namespace attached to the user interface. | Game session |
1.00 | profileNamespace | The global namespace attached to the user profile. | Profile lifetime |
2.00 | localNamespace | This namespace is like the missionNamespace, except that its variables can not be broadcasted (e.g. with publicVariable) or serialized. | Mission duration |
2.06 | serverNamespace | The namespace used by Server Event Handlers. This namespace is only available on servers. | Game session |
Namespace Serialization
Only the missionNamespace is serialized, i.e. only the variables from this namespace are saved when the game is saved (e.g. with saveGame) and loaded when the game is loaded (e.g. with loadGame). This is also the reason the game will complain that one should use disableSerialization when storing UI variables in missionNamespace - UI elements are temporary and therefore exempt from serialization by default.
Scripting with Namespaces
Interacting with namespaces is not difficult:
- The getVariable and setVariable commands can be used to work with variables from different namespaces.
- The with-do-construct can be used to switch the context of an entire code block to another namespace.
- The currentNamespace command can be used to obtain the namespace which the calling script is running in.