private: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "[[Category:Scripting Commands ArmA|" to "[[Category:Scripting Commands Armed Assault|")
(Clarifiy misleading note, add links)
Line 8: Line 8:


| Sets a variable to the innermost scope as demonstrated in Example 3. See also [[param]] and [[params]].
| Sets a variable to the innermost scope as demonstrated in Example 3. See also [[param]] and [[params]].
{{Informative | [[private]] variables '''must''' start with an underscore: <tt>[[private]] <span style{{=}}"color:red;font-weight:bold">_</span>myVar1 {{=}} "myVar";</tt>}}
{{Informative | [[private]] variables '''must''' start with an underscore: <tt>[[private]] '''{{Color|red|_}}'''myVar1 {{=}} "myVar";</tt> - see [[Identifier]].}}
{{Warning | '''Always''' make your local variables '''private''' (through [[private]] or [[params]]) in order to avoid overwriting a local variable of the same name.}} |DESCRIPTION=
{{Warning | '''Always''' make your local variables '''private''' (through [[private]] or [[params]]) in order to avoid [[Variables#Scopes|overwriting a local variable of the same name]].}} |DESCRIPTION=
____________________________________________________________________________________________
____________________________________________________________________________________________


Line 88: Line 88:
<dt class="note">[[User:654wak654|654wak654]]</dt>
<dt class="note">[[User:654wak654|654wak654]]</dt>
<dd class="note">
<dd class="note">
This command has the same functionality as javascript's let keyword.<br>
This command is ''similar'' to javascript's [https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let let]] keyword.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
'''EDIT:''' in the way that it scopes the variable to the innermost scope. Otherwise, let and private can behave differently.
</dd>
</dd>


Line 98: Line 98:


[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP 1.96|PRIVATE]]
[[Category:Scripting Commands OFP 1.96|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP 1.99|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands OFP 1.99|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Armed Assault|PRIVATE]]
[[Category:Scripting Commands Armed Assault|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Take On Helicopters|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting Commands Take On Helicopters|{{uc:{{PAGENAME}}}}]]

Revision as of 16:37, 15 June 2020

Hover & click on the images for description

Description

Description:
Sets a variable to the innermost scope as demonstrated in Example 3. See also param and params.
private variables must start with an underscore: private _myVar1 = "myVar"; - see Identifier.
Always make your local variables private (through private or params) in order to avoid overwriting a local variable of the same name.
Groups:
Uncategorised

Syntax 1

Syntax:
private variableName
Parameters:
variableName: String
Return Value:
Nothing

Syntax 2

Syntax:
private variableNameList
Parameters:
variableNameList: Array of Strings
variable: underscored variable, for example _myvar
value: Anything: value to assign to the variable
Return Value:
Nothing

Syntax 3

Syntax:
private variable = value         (Since Arma 3 v1.53.132932)
Return Value:
Nothing

Examples

Example 1:
private _varname = "this is my new variable"; // since Arma 3 v1.53 only // identical, but less performant private "_varname"; _varname = "this is my new variable";
Example 2:
private ["_varname1", "_varname2"]; _varname1 = "variable 1"; _varname2 = "variable 2";
Example 3:
_lol = 123; call { hint str [_lol] }; // [123] _lol = 123; call { private "_lol"; hint str [_lol] }; // [any]
Example 4:
_myvar = 123; systemChat str [_myvar]; // [123] call { systemChat str [_myvar]; // [123] private "_myvar"; systemChat str [_myvar]; // [any] _myvar = 345; systemChat str [_myvar]; // [345] }; systemChat str [_myvar]; // [123]

Additional Information

See also:
paramparamsScope

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

Notes

Posted on August 4, 2010
Faguss
The higher scope is also the script from which the function has been called.
in script2.sqf: _a = 2; in script1.sqf: _a = 1; call compile preprocessFileLineNumbers "script2.sqf"; hint format ["%1", _a];
Game will display 2.
Inserting private "_a" in the function prevents the change and so number 1 will be displayed on the screen.
Posted on February 25, 2015 - 17:06 (UTC)
DreadedEntity
Recursive loops require the use of private. Without it, your variables will be overwritten.
Posted on January 31, 2018 - 10:37 (UTC)
654wak654
This command is similar to javascript's let] keyword. EDIT: in the way that it scopes the variable to the innermost scope. Otherwise, let and private can behave differently.

Bottom Section