a hash b: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\[\[Category:[ _]?Scripting[ _]Commands[ _]Arma[ _]3(\|.*)]]" to "{{GameCategory|arma3|Scripting Commands}}")
m (Some wiki formatting)
 
(50 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Command|Comments=
{{RV|type=command
____________________________________________________________________________________________


| arma3 |Game name=
|sortKey= #


|1.82|Game version=
|game1= arma3
|version1= 1.82


|gr1= Variables |GROUP1=
|gr1= Variables
____________________________________________________________________________________________


| Selects an element from an [[Array | array]], same as [[select]] command for arrays, but has [[SQF_syntax#Rules_of_Precedence | higher precedence]] |Description=
|descr= Selects an element from an [[Array]], same as [[select]] command for arrays, but has [[Order of Precedence|higher precedence]].
____________________________________________________________________________________________
{{Feature|informative|'''#''' has higher precedence than all binary operators, but it has lower precedence than unary operators (see {{Link|#Example 3}}).}}


| array  [[a_hash_b|#]] index |Syntax=
|s1= array  [[a_hash_b|#]] index


| p1= array: [[Array]] |Parameter 1=
|p1= array: [[Array]]


| p2= index: [[Number]] |Parameter 2=
|p2= index: [[Number]]


| [[Anything]] |Return value=
|r1= [[Anything]]
____________________________________________________________________________________________
 
 
|x1= <code>[1,2,3,4] [[a_hash_b|#]] 2; {{codecomment|// result is 3}}</code> |Example 1=


|x2= <code>[[position]] [[player]] [[a_hash_b|#]] 2; {{codecomment|// result is Z coordinate of player's position}}</code> |Example 2=
|x1= <sqf>[1, 2, 3, 4] # 2; // result is 3</sqf>
____________________________________________________________________________________________


| [[select]], [[selectRandom]], [[selectRandomWeighted]], [[set]], [[resize]], [[reverse]], [[in]], [[find]], [[toArray]], [[toString]], [[forEach]], [[count]], [[deleteAt]], [[deleteRange]], [[append]], [[sort]], [[param]], [[params]], [[splitString]], [[joinString]], [[pushBack]], [[pushBackUnique]], [[apply]] |See also=
|x2= <sqf>getPosASL player # 2; // result is Z component of player's position</sqf>
}}


<h3 style="display:none">Notes</h3>
|x3= <sqf>
<dl class="command_description">
// 'getPosASL' is unary; '#' and '+' are binary; precedence is: 'getPosASL' > '#' > '+'
getPosASL player # 2 + 1; // equivalent to (getPosASL player # 2) + 1, not (getPosASL player)#(2+1)
</sqf>


<h3 style="display:none">Bottom Section</h3>
|seealso= [[select]] [[selectRandom]] [[selectRandomWeighted]] [[set]] [[resize]] [[reverse]] [[in]] [[find]] [[toArray]] [[toString]] [[forEach]] [[count]] [[deleteAt]] [[deleteRange]] [[append]] [[sort]] [[param]] [[params]] [[splitString]] [[joinString]] [[pushBack]] [[pushBackUnique]] [[apply]]
[[Category:Scripting Commands|#]]
}}
{{GameCategory|arma3|Scripting Commands}}


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= KC Grimes
<dd class="notedate">Posted on April 25, 2018 - 00:51 (UTC)</dd>
|timestamp= 20180425005100
<dt class="note">[[User:KC Grimes|KC Grimes]]</dt>
|text= Although not alternative syntax, the below notations work as expected:
<dd class="note">
<sqf>
Although not alternative syntax, the below notations work as expected:
["A", "B", "C"] # 1; // B
<code>["A","B","C"] # 1; //B
["A", "B", "C"] #1; // B
["A","B","C"] #1; //B
["A", "B", "C"]#1; // B
["A","B","C"]#1; //B
["A", "B", ["C", "D"]]#2#0; // C
["A","B",["C","D"]]#2#0; //C</code>
</sqf>
</dd>
}}
</dl>
<!-- DISCONTINUE Notes -->


<!-- CONTINUE Notes -->
{{Note
<dl class="command_description">
|user= 7erra
<dd class="notedate">Posted on May 3, 2019 - 15:41 (UTC)</dd>
|timestamp= 20190503154100
<dt class="note">[[User:7erra|7erra]]</dt>
|text= Here is an example of what higher precedence means:
<dd class="note">
<sqf>
Here is an example of what higher precedence means:
[1, 2, 3, 4] select 2 / 2; // divides 2 with 2, therefore selects the second element at index 1, result = 2
<code>[1,2,3,4] [[select]] 2/2;   // divides 2 with 2, therefore selects second element = 2
[1, 2, 3, 4] select (2 / 2); // same result with brackets
[1,2,3,4] [[select]] (2/2); // same result with brackets
[1, 2, 3, 4] # 2 / 2; // selects third element, then divides by 2 = 1.5
[1,2,3,4] # 2/2;       // selects third element, then divides by 2 = 1.5
([1, 2, 3, 4] # 2) / 2; // same result with brackets
([1,2,3,4] # 2)/2;     // same result with brackets
</sqf>
</code>
<br>
<br>
This operator can not be used in conjunction with the #define preprocessor.<br>
This operator can not be used in conjunction with the #define preprocessor.<br>
<code><nowiki>#define SEL_ERR [0,1,2]#0 //error
<sqf>
#define SEL_NOERR [0,1,2] select 0 //works</nowiki></code>
#define SEL_ERR [0,1,2]#0; // error
</dd>
#define SEL_NOERR [0,1,2] select 0; // works
</dl>
</sqf>
<!-- DISCONTINUE Notes -->
}}
 
{{Note
|user= Fett_li
|timestamp= 20210402161800
|text= Beware new-lines when using this operator. I suspect the preprocessor to fail. The following code will not compile without throwing an error:
<sqf>
[0]
# 0;
</sqf>
}}

Latest revision as of 21:29, 2 September 2024

Hover & click on the images for description

Description

Description:
Selects an element from an Array, same as select command for arrays, but has higher precedence.
# has higher precedence than all binary operators, but it has lower precedence than unary operators (see Example 3).
Groups:
Variables

Syntax

Syntax:
array # index
Parameters:
array: Array
index: Number
Return Value:
Anything

Examples

Example 1:
[1, 2, 3, 4] # 2; // result is 3
Example 2:
getPosASL player # 2; // result is Z component of player's position
Example 3:
// 'getPosASL' is unary; '#' and '+' are binary; precedence is: 'getPosASL' > '#' > '+' getPosASL player # 2 + 1; // equivalent to (getPosASL player # 2) + 1, not (getPosASL player)#(2+1)

Additional Information

See also:
select selectRandom selectRandomWeighted set resize reverse in find toArray toString forEach count deleteAt deleteRange append sort param params splitString joinString pushBack pushBackUnique apply

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
KC Grimes - c
Posted on Apr 25, 2018 - 00:51 (UTC)
Although not alternative syntax, the below notations work as expected:
["A", "B", "C"] # 1; // B ["A", "B", "C"] #1; // B ["A", "B", "C"]#1; // B ["A", "B", ["C", "D"]]#2#0; // C
7erra - c
Posted on May 03, 2019 - 15:41 (UTC)
Here is an example of what higher precedence means:
[1, 2, 3, 4] select 2 / 2; // divides 2 with 2, therefore selects the second element at index 1, result = 2 [1, 2, 3, 4] select (2 / 2); // same result with brackets [1, 2, 3, 4] # 2 / 2; // selects third element, then divides by 2 = 1.5 ([1, 2, 3, 4] # 2) / 2; // same result with brackets

This operator can not be used in conjunction with the #define preprocessor.
#define SEL_ERR [0,1,2]#0; // error #define SEL_NOERR [0,1,2] select 0; // works
Fett_li - c
Posted on Apr 02, 2021 - 16:18 (UTC)
Beware new-lines when using this operator. I suspect the preprocessor to fail. The following code will not compile without throwing an error:
[0] # 0;