From Bohemia Interactive Community
Hover & click on the images for description
⚠
Only available in
Development branch(es) until its release with Arma 3 patch
v2.14.
Description
- Description:
- Create a HashMap with an Object-Oriented Programming behaviour.
Inside a object, Methods (if they are called correctly, either by engine or via call - Syntax 3) will have the objects instance inside the "_self" variable.
The Destructor ("#delete" method) will be executed when the last reference to the objects variable gets deleted. (Except when the mission is ended and all variables are deleted at once)
Inheritance: HashMap objects support a simple form of Inheritance.
It behaves similar to the merge command with overwriteExisting enabled. Sub-class methods and properties with same name, overwrite their Base-class values.
Constructor/Destructor/Clone methods will be merged together and executed in sequence.
Flags entry will use overwrite behaviour.
- Groups:
- HashMap
Syntax
- Syntax:
- createHashMapObject [classDefinition, constructorArguments]
- Parameters:
- classDefinition: HashMap or Array of Arrays, format [name, value]:
name can be anything like any other HashMap, but it must be a String for it to be used like an OOP object method (see call - Syntax 3).
Some special values, starting with #, are reserved and expect a specific value type (they are all optional):
- "#create": Code - this is the hashmap object's constructor
- "#clone": Code - this is code happening when cloning is done on this hashmap object
- "#delete": Code - this is the hashmap object's destructor. It will always be executed inside missionNamespace.
- "#str": Code - code that is used to evaluate what is displayed when - must return String
- "#flags": Array of Strings - case-insensitive flags regarding this hashmap object
- "noCopy": forbids copying, +_hashMapObject will throw an error
- "sealed": prevents from adding and removing any keys - key values can still be edited
- "unscheduled": all methods (including #clone and #create) will be executed in unscheduled environment
- "#base": Array or HashMap - declaration of base class for inheritance
- "#type": Any - can be used to give a object a "type name", on inheritance types will be merged into an Array
Note that all entries beginning with # are reserved, the engine might use these internally without their use being documented.
- constructorArguments: Anything - (Optional, default Nothing) passed as _this argument to the "#create" method.
- Return Value:
- HashMap
Examples
- Example 1:
- Example 2:
- Inheritance constructor/destructor/copy orderings:
- Example 3:
- Inheritance type checking:
- Example 4:
- Destructor:
Additional Information
- See also:
- call createHashMap
Notes
-
Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here!
Add Note