private: Difference between revisions
Jump to navigation
Jump to search
m (Text replace - "{{uc:{{PAGENAME}}}}" to "{{uc:{{PAGENAME}}}} {{uc:{{PAGENAME}}}}") |
m (template:command argument fix) |
||
(16 intermediate revisions by 8 users not shown) | |||
Line 7: | Line 7: | ||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| Sets a variable to the innermost scope. | | Sets a variable to the innermost scope as demonstrated in Example 3. One other command that is capable of creating private variables is [[params]]. | ||
<br>Since Arma 3 v1.53.132932 [[private]] can be used as keyword as shown in Example 4. |DESCRIPTION= | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
| '''private''' variableName |= | | '''private''' variableName |SYNTAX= | ||
|p1= variableName: [[String]] |= | |p1= variableName: [[String]] |PARAMETER1= | ||
| [[Nothing]] |= | | [[Nothing]] |RETURNVALUE= | ||
|s2= '''private''' variableNameList |= | |s2= '''private''' variableNameList |SYNTAX= | ||
|p21= variableNameList: [[Array]] |= | |p21= variableNameList: [[Array]] of [[String]]s |PARAMETER1= | ||
|r2= [[Nothing]] |= | |r2= [[Nothing]] |RETURNVALUE= | ||
| s3 = '''private''' variable = value (''Since Arma 3 v1.53.132932'') |SYNTAX= | |||
|p41= variable: underscored variable, for example ''_myvar'' |PARAMETER1= | |||
|p42= value: [[Anything]]: value to assign to the variable |PARAMETER1= | |||
|r3 = [[Nothing]] |RETURNVALUE= | |||
____________________________________________________________________________________________ | ____________________________________________________________________________________________ | ||
|x1= <code>private "_varname";</code> |= | |||
|x2= <code>private ["_varname1", "_varname2"];</code> |= | |x1= <code>[[private]] "_varname";</code> |EXAMPLE1= | ||
|x2= <code>[[private]] ["_varname1", "_varname2"];</code> |EXAMPLE2= | |||
| [ | |x3=<code>_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] </code>|= | |||
|x4= Usage of [[private]] as keyword: <code>[[private]] _myvar = 123; | |||
//is the same as | |||
[[private]] "_myvar"; | |||
_myvar = 123;</code> |EXAMPLE4= | |||
|x5=<code>_lol = 123; [[call]] {[[hint]] [[str]] [_lol]}; // [123] | |||
_lol = 123; [[call]] {[[private]] "_lol"; [[hint]] [[str]] [_lol]}; // [any]</code> |EXAMPLE5= | |||
| [[params]], [[Variables#Scope|Scope]] |SEEALSO= | |||
}} | }} | ||
Line 28: | Line 53: | ||
<dl class="command_description"> | <dl class="command_description"> | ||
<!-- Note Section BEGIN --> | <!-- Note Section BEGIN --> | ||
<dd class="notedate">Posted on Sep 24, 2009 15:04 | |||
<dt class="note">'''[[User:ColonelSandersLite|ColonelSandersLite]]''' | <dt class="note">'''[[User:ColonelSandersLite|ColonelSandersLite]]''' | ||
<dd class="note"><br> | <dd class="note"><br> | ||
Line 37: | Line 59: | ||
Using the private command allows you to declare a variable in the current scope, without regards to variables in a higher scope with the same name. Note that if you try to declare a variable without an underscore (meaning it's global) with the private command, it will cause an error. Specifically: "Error Local variable in global space".<br> | Using the private command allows you to declare a variable in the current scope, without regards to variables in a higher scope with the same name. Note that if you try to declare a variable without an underscore (meaning it's global) with the private command, it will cause an error. Specifically: "Error Local variable in global space".<br> | ||
Here's a code example with output for your benefit.<br> | Here's a code example with output for your benefit.<br> | ||
<code> | |||
_foo = 10; | _foo = 10; | ||
if (true) then | if (true) then | ||
Line 45: | Line 68: | ||
}; | }; | ||
player sideChat format ["%1", _foo]; | player sideChat format ["%1", _foo]; | ||
< | </code> | ||
In this example, the first sidechat (innermost) returns 5 while the second sidechat (outermost) returns 10.<br> | In this example, the first sidechat (innermost) returns 5 while the second sidechat (outermost) returns 10.<br> | ||
< | <code> | ||
if (true) then | if (true) then | ||
{ | { | ||
Line 54: | Line 77: | ||
player sideChat format ["%1", _bar]; | player sideChat format ["%1", _bar]; | ||
}; | }; | ||
< | </code> | ||
In this example, the private command does nothing and is simply a waste of code, assuming there is no higher level code to interfere with the if statement.<br> | In this example, the private command does nothing and is simply a waste of code, assuming there is no higher level code to interfere with the if statement.<br> | ||
<dd class="notedate">Posted on August 4, 2010 | <dd class="notedate">Posted on August 4, 2010 | ||
<dt class="note">'''[[User:Faguss|Faguss]]''' | <dt class="note">'''[[User:Faguss|Faguss]]''' | ||
<dd class="note">The higher scope is also the script from which the function has been called.<br> | <dd class="note">The higher scope is also the script from which the function has been called.<br> | ||
If you've got in the script: | If you've got in the script: | ||
_a = 1 | <code> | ||
call loadFile "function.sqf" | _a = 1; | ||
hint format ["%1", _a] | call compile loadFile "function.sqf"; | ||
hint format ["%1", _a]; | |||
</code> | |||
And in the <i>function.sqf</i>: | And in the <i>function.sqf</i>: | ||
<code> | |||
_a = 2; | _a = 2; | ||
</code> | |||
Game will display 2.<br><br> | Game will display 2.<br><br> | ||
Inserting <i>private "_a"</i> in the function prevents the change and so number 1 will be displayed on the screen. | Inserting <i>private "_a"</i> in the function prevents the change and so number 1 will be displayed on the screen. | ||
<dd class="notedate">Posted on February 25, 2015 - 17:06 (UTC)</dd> | |||
<dt class="note">[[User:DreadedEntity|DreadedEntity]]</dt> | |||
<dd class="note"> | |||
Recursive loops require the use of [[private]]. Without it, your variables will be overwritten. | |||
</dd> | |||
<dd class="notedate">Posted on January 31, 2018 - 10:30 (UTC)</dd> | |||
<dt class="note">Dscha</dt> | |||
<dd class="note">More examples!<br> | |||
<code>[[if]] ([[true]]) [[then]] { //new scope | |||
_localVar = "some string"; | |||
[[systemChat]] _localVar; // = "some string" | |||
}; | |||
[[systemChat]] _localVar; // = ERROR _localVar doesn't exist in the outer Scope | |||
</code> | |||
<code>_localVar = "bla"; | |||
[[if]] ([[true]]) [[then]] { //new scope | |||
_localVar = "some string"; | |||
[[systemChat]] _localVar; // = "some string" | |||
}; | |||
[[systemChat]] _localVar; // = "some string" | |||
</code> | |||
<code>_localVar = "bla"; | |||
[[if]] ([[true]]) [[then]] { | |||
[[private]] _localVar = "some string"; | |||
[[systemChat]] _localVar; // = "some string" | |||
}; | |||
[[systemChat]] _localVar; // = "bla" | |||
</code> | |||
<code>_localVar = "bla"; | |||
[[if]] ([[true]]) [[then]] { //new scope | |||
[[private]] _localVar = "some string"; | |||
[[if]] ([[true]]) [[then]] { //new scope | |||
[[private]] _localVar = "some other string"; | |||
[[systemChat]] _localVar; // = "some other string" | |||
}; | |||
[[systemChat]] _localVar; // = "some string" | |||
}; | |||
[[systemChat]] _localVar; // = "bla" | |||
</code> | |||
</dd> | |||
<!-- Note Section END --> | <!-- Note Section END --> | ||
Line 77: | Line 141: | ||
[[Category:Scripting Commands|PRIVATE]] | [[Category:Scripting Commands|PRIVATE]] | ||
[[Category:Scripting Commands OFP 1.99|{{uc:{{PAGENAME}}}}]] | |||
[[Category:Scripting Commands OFP 1.96|PRIVATE]] | [[Category:Scripting Commands OFP 1.96|PRIVATE]] | ||
[[Category:Scripting Commands ArmA|PRIVATE]] | [[Category:Scripting Commands ArmA|PRIVATE]] | ||
Line 82: | Line 147: | ||
[[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}}}}]] | ||
<!-- CONTINUE Notes --> | |||
<dl class="command_description"> | |||
<dd class="notedate">Posted on January 31, 2018 - 10:37 (UTC)</dd> | |||
<dt class="note">[[User:654wak654|654wak654]]</dt> | |||
<dd class="note"> | |||
This command has the same functionality as javascript's let keyword.<br> | |||
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let | |||
</dd> | |||
</dl> | |||
<!-- DISCONTINUE Notes --> |
Revision as of 15:45, 7 April 2019
Description
- Description:
- Sets a variable to the innermost scope as demonstrated in Example 3. One other command that is capable of creating private variables is params.
Since Arma 3 v1.53.132932 private can be used as keyword as shown in Example 4. - Groups:
- Uncategorised
Syntax 1
Syntax 2
Syntax 3
- Syntax:
- private variable = value (Since Arma 3 v1.53.132932)
- Parameters:
- variable: underscored variable, for example _myvar
- value: Anything: value to assign to the variable
- Return Value:
- Nothing
Examples
- Example 1:
private "_varname";
- Example 2:
private ["_varname1", "_varname2"];
- Example 3:
_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]
- Example 4:
- Usage of private as keyword:
private _myvar = 123; //is the same as private "_myvar"; _myvar = 123;
- Example 5:
_lol = 123; call {hint str [_lol]}; // [123] _lol = 123; call {private "_lol"; hint str [_lol]}; // [any]
Additional Information
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 Sep 24, 2009 15:04
- ColonelSandersLite
The example provided is fairly worthless without a context.
Using the private command allows you to declare a variable in the current scope, without regards to variables in a higher scope with the same name. Note that if you try to declare a variable without an underscore (meaning it's global) with the private command, it will cause an error. Specifically: "Error Local variable in global space".
Here's a code example with output for your benefit.
_foo = 10; if (true) then { private ["_foo"]; _foo = 5; player sideChat format ["%1", _foo]; }; player sideChat format ["%1", _foo];
In this example, the first sidechat (innermost) returns 5 while the second sidechat (outermost) returns 10.
if (true) then { private ["_bar"]; _bar = 5; player sideChat format ["%1", _bar]; };
In this example, the private command does nothing and is simply a waste of code, assuming there is no higher level code to interfere with the if statement.
- Posted on August 4, 2010
- Faguss
- The higher scope is also the script from which the function has been called.
If you've got in the script:_a = 1; call compile loadFile "function.sqf"; hint format ["%1", _a];
And in the function.sqf:_a = 2;
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:30 (UTC)
- Dscha
- More examples!
if (true) then { //new scope _localVar = "some string"; systemChat _localVar; // = "some string" }; systemChat _localVar; // = ERROR _localVar doesn't exist in the outer Scope
_localVar = "bla"; if (true) then { //new scope _localVar = "some string"; systemChat _localVar; // = "some string" }; systemChat _localVar; // = "some string"
_localVar = "bla"; if (true) then { private _localVar = "some string"; systemChat _localVar; // = "some string" }; systemChat _localVar; // = "bla"
_localVar = "bla"; if (true) then { //new scope private _localVar = "some string"; if (true) then { //new scope private _localVar = "some other string"; systemChat _localVar; // = "some other string" }; systemChat _localVar; // = "some string" }; systemChat _localVar; // = "bla"
Bottom Section
- Posted on January 31, 2018 - 10:37 (UTC)
- 654wak654
-
This command has the same functionality as javascript's let keyword.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let
Categories:
- Scripting Commands
- Introduced with Operation Flashpoint version 1.00
- Operation Flashpoint: New Scripting Commands
- Operation Flashpoint: Scripting Commands
- Command Group: Uncategorised
- Scripting Commands OFP 1.99
- Scripting Commands OFP 1.96
- Scripting Commands ArmA
- Scripting Commands ArmA2
- Scripting Commands Arma 3
- Scripting Commands Take On Helicopters