Array+=: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Some wiki formatting)
m (Fix spacing)
Line 1: Line 1:
The array[]+={} syntax for {{arma3}} was introduced as an attempt to add unique weapons (or magazines) to a unit without the tedium of duplicate-typing all the basic items.
The <syntaxhighlight lang="cpp" inline>array[] += {}</syntaxhighlight> syntax for {{arma3}} was introduced as an attempt to add unique weapons (or magazines) to a unit without the tedium of duplicate-typing all the basic items.


It originally had a text-only interpreter making it quite impossible to generate config.bin's versus config.cpp's. Later, Binarize was modified to create new token code for this syntax.
It originally had a text-only interpreter making it quite impossible to generate config.bin's versus config.cpp's. Later, Binarize was modified to create new token code for this syntax.
Line 5: Line 5:


It is not present in any form in any of the official addons accompanying {{arma3}}.
It is not present in any form in any of the official addons accompanying {{arma3}}.
<!-- // commented until somebody looks into this article
 
As a command it is almost totally useless. Since nested hierarchy isn't permitted, it is pointless.
-->


== Usage ==
== Usage ==
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="cpp">
class A
class A
Line 36: Line 35:
class C : B // inherits from B which inherits from A (without changes)
class C : B // inherits from B which inherits from A (without changes)
{
{
array[]+ = { wont, work }; // result: array[] = { wont, work };
array[] += { wont, work }; // result: array[] = { wont, work };
};
};
</syntaxhighlight>
</syntaxhighlight>

Revision as of 14:16, 13 June 2023

The array[] += {} syntax for Arma 3 was introduced as an attempt to add unique weapons (or magazines) to a unit without the tedium of duplicate-typing all the basic items.

It originally had a text-only interpreter making it quite impossible to generate config.bin's versus config.cpp's. Later, Binarize was modified to create new token code for this syntax. This token code is broken as it bears no relationship to any other tokenised output. It 'works' simply because its data format can be ignored.

It is not present in any form in any of the official addons accompanying Arma 3.


Usage

class A
{
	array[] = { any, thing };
};

class B : A
{
	array += { more, Bstuff };
};

class C : A // inherits from A, -not- B
{
	array += { other, Cstuff };
};
Only direct inheritance of an explicitly-stated array works. The following cases do not work:
class A { array[] = { any, thing }; }
class B : A {};
class C : B // inherits from B which inherits from A (without changes)
{
	array[] += { wont, work }; // result: array[] = { wont, work };
};
class A { array[] = { any, thing }; };
class B : A { array[] += { more, stuff }; };
class C : B // inherits from B which inherits from A (with += changes)
{
	array[] += { wont, work }; // result: array[] = { wont, work };
};