Scripting: Operators – Arma Reforger
Lou Montana (talk | contribs) m (Text replacement - "<syntaxhighlight lang="C#">" to "<enforce>") |
Lou Montana (talk | contribs) m (Text replacement - "</syntaxhighlight>" to "</enforce>") |
||
Line 12: | Line 12: | ||
<enforce> | <enforce> | ||
int five = 5; | int five = 5; | ||
</ | </enforce> | ||
{{Feature|important|This operator is '''NOT''' an equality check. For this, see {{HashLink|#{{=}}{{=}}}}.}} | {{Feature|important|This operator is '''NOT''' an equality check. For this, see {{HashLink|#{{=}}{{=}}}}.}} | ||
Line 20: | Line 20: | ||
int result = 5; | int result = 5; | ||
result++; // result is 6 | result++; // result is 6 | ||
</ | </enforce> | ||
==== -- ==== | ==== -- ==== | ||
Line 27: | Line 27: | ||
int result = 5; | int result = 5; | ||
result--; // result is 4 | result--; // result is 4 | ||
</ | </enforce> | ||
==== +{{=}} ==== | ==== +{{=}} ==== | ||
Line 34: | Line 34: | ||
int result = 5; | int result = 5; | ||
result += 3; // result is 8 | result += 3; // result is 8 | ||
</ | </enforce> | ||
==== -{{=}} ==== | ==== -{{=}} ==== | ||
Line 41: | Line 41: | ||
int result = 5; | int result = 5; | ||
result -= 3; // result is 2 | result -= 3; // result is 2 | ||
</ | </enforce> | ||
==== *{{=}} ==== | ==== *{{=}} ==== | ||
Line 48: | Line 48: | ||
int result = 5; | int result = 5; | ||
result *= 3; // result is 15 | result *= 3; // result is 15 | ||
</ | </enforce> | ||
==== /{{=}} ==== | ==== /{{=}} ==== | ||
Line 55: | Line 55: | ||
int result = 5; | int result = 5; | ||
result /= 3; // result is 1 (floored int value) | result /= 3; // result is 1 (floored int value) | ||
</ | </enforce> | ||
=== Arithmetic === | === Arithmetic === | ||
Line 65: | Line 65: | ||
5 + 2.5; // result is 7.5 (float) | 5 + 2.5; // result is 7.5 (float) | ||
3.25 + 1.75; // result is 5.0 (float) | 3.25 + 1.75; // result is 5.0 (float) | ||
</ | </enforce> | ||
==== - ==== | ==== - ==== | ||
Line 73: | Line 73: | ||
5 - 2.5; // result is 2.5 (float) | 5 - 2.5; // result is 2.5 (float) | ||
3.25 - 1.25; // result is 2.0 (float) | 3.25 - 1.25; // result is 2.0 (float) | ||
</ | </enforce> | ||
==== * ==== | ==== * ==== | ||
Line 81: | Line 81: | ||
5 * 2.5; // result is 12.5 (float) | 5 * 2.5; // result is 12.5 (float) | ||
1.5 * 3.25; // result is 4.875 (float) | 1.5 * 3.25; // result is 4.875 (float) | ||
</ | </enforce> | ||
==== / ==== | ==== / ==== | ||
Line 91: | Line 91: | ||
5 / 2.5; // result is 2.0 (float) | 5 / 2.5; // result is 2.0 (float) | ||
3.5 / 0.5; // result is 7.0 (float) | 3.5 / 0.5; // result is 7.0 (float) | ||
</ | </enforce> | ||
==== % ==== | ==== % ==== | ||
Line 100: | Line 100: | ||
5 % 3; // result is 2: 5 is one time 3, remaining 2 | 5 % 3; // result is 2: 5 is one time 3, remaining 2 | ||
10 % 2; // result is 0: 10 is five times 2, remaining 0 | 10 % 2; // result is 0: 10 is five times 2, remaining 0 | ||
</ | </enforce> | ||
Line 116: | Line 116: | ||
10 > 5.5; // true | 10 > 5.5; // true | ||
10.5 > 5; // true | 10.5 > 5; // true | ||
</ | </enforce> | ||
==== < ==== | ==== < ==== | ||
Line 129: | Line 129: | ||
10 < 5.5; // false | 10 < 5.5; // false | ||
10.5 < 5; // false | 10.5 < 5; // false | ||
</ | </enforce> | ||
==== >{{=}} ==== | ==== >{{=}} ==== | ||
Line 142: | Line 142: | ||
10 >= 5.5; // true | 10 >= 5.5; // true | ||
10.5 >= 5; // true | 10.5 >= 5; // true | ||
</ | </enforce> | ||
==== <{{=}} ==== | ==== <{{=}} ==== | ||
Line 155: | Line 155: | ||
10 <= 5.5; // false | 10 <= 5.5; // false | ||
10.5 <= 5; // false | 10.5 <= 5; // false | ||
</ | </enforce> | ||
==== {{=}}{{=}} ==== | ==== {{=}}{{=}} ==== | ||
Line 187: | Line 187: | ||
MyClass object2 = new MyClass(); | MyClass object2 = new MyClass(); | ||
object1 == object2; // false - same type, different instance | object1 == object2; // false - same type, different instance | ||
</ | </enforce> | ||
==== !{{=}} ==== | ==== !{{=}} ==== | ||
Line 216: | Line 216: | ||
MyClass object2 = new MyClass(); | MyClass object2 = new MyClass(); | ||
object1 != object2; // true - different instance | object1 != object2; // true - different instance | ||
</ | </enforce> | ||
=== Logical === | === Logical === | ||
Line 234: | Line 234: | ||
boolean b = true; | boolean b = true; | ||
boolean result = a && b; // result is true | boolean result = a && b; // result is true | ||
</ | </enforce> | ||
==== {{!}}{{!}} ==== | ==== {{!}}{{!}} ==== | ||
Line 250: | Line 250: | ||
boolean b = true; | boolean b = true; | ||
boolean result = a || b; // result is true | boolean result = a || b; // result is true | ||
</ | </enforce> | ||
==== ! ==== | ==== ! ==== | ||
Line 297: | Line 297: | ||
Print("instance is NOT null!"); | Print("instance is NOT null!"); | ||
} | } | ||
</ | </enforce> | ||
=== Bitwise === | === Bitwise === | ||
Line 308: | Line 308: | ||
int result = a & b; // 00001001 in binary | int result = a & b; // 00001001 in binary | ||
// result is 9 | // result is 9 | ||
</ | </enforce> | ||
==== {{!}} ==== | ==== {{!}} ==== | ||
Line 317: | Line 317: | ||
int result = a | b; // 00001111 in binary | int result = a | b; // 00001111 in binary | ||
// result is 15 | // result is 15 | ||
</ | </enforce> | ||
==== ~ ==== | ==== ~ ==== | ||
Line 325: | Line 325: | ||
int result = ~a; // 1111 1111 1111 1111 1111 1111 1111 1000 in binary | int result = ~a; // 1111 1111 1111 1111 1111 1111 1111 1000 in binary | ||
// result is -8 | // result is -8 | ||
</ | </enforce> | ||
==== << ==== | ==== << ==== | ||
Line 336: | Line 336: | ||
// result is 00000100 | // result is 00000100 | ||
// result is 4 | // result is 4 | ||
</ | </enforce> | ||
==== >> ==== | ==== >> ==== | ||
Line 347: | Line 347: | ||
// result is 00000001 | // result is 00000001 | ||
// result is 1 | // result is 1 | ||
</ | </enforce> | ||
=== String === | === String === | ||
Line 374: | Line 374: | ||
string ok2 = "test" + 3 + true + false + 4; // will return "test3104" | string ok2 = "test" + 3 + true + false + 4; // will return "test3104" | ||
string error = 3 + "test"; // will throw a parsing error | string error = 3 + "test"; // will throw a parsing error | ||
</ | </enforce> | ||
=== Indexing === | === Indexing === | ||
Line 390: | Line 390: | ||
string text = "ABCDE"; | string text = "ABCDE"; | ||
string thirdLetter = text[2]; // result is "C" | string thirdLetter = text[2]; // result is "C" | ||
</ | </enforce> | ||
Revision as of 19:18, 30 July 2022
Operators are elements used to generate operations between two values.
Types
Assignment
=
The "assign operator sets the righthand value to the lefthand variable.
++
The increment operator adds 1 to the provided numerical variable. It only applies to int and float values.
--
The decrement operator removes 1 to the provided numerical variable. It only applies to int and float values.
+=
The "add to" operator adds the righthand value to the lefthand variable.
-=
The "subtract from" operator subtract the righthand value to the lefthand variable.
*=
The "multiply with" operator multiplies the lefthand variable with the righthand value.
/=
The "divide by" operator multiplies the lefthand variable with the righthand value.
Arithmetic
+
he "adds" operator does an addition between two numeric values, float and/or integer.
-
The "subtract from" operator does a subtraction between two numerical values, float and/or integer.
*
The multiplication sign does a multiplication between two numerical values, float and/or integer.
/
The "divided by" operator divides the left argument by the right one.
It can be applied to int, float or a mix of those.
If both values are int, the return value will be a floored integer as well.
%
Modulo is an operator that gives the remainder of a division.
It only applies to integers.
method for a float modulo approximation.}}
Relational
>
The "greater than" operator returns true if the left argument is strictly greater than the right argument, false otherwise.
It can be applied to int, float or a mix of those.
<
The "lesser than" operator returns true if the left argument is strictly smaller than the right argument, false otherwise.
It can be applied to int, float or a mix of those.
>=
The "greater than or equal" operator returns true if the left argument is greater than or equal to the right argument, false otherwise.
It can be applied to int, float or a mix of those.
<=
The "lesser than or equal" operator returns true if the left argument is smaller than or equal to the right argument, false otherwise.
It can be applied to int, float or a mix of those.
==
The "equals" operator returns true if the left argument is strictly equal to the right argument, false otherwise.
Applies to:
- boolean
- int
- float
- int / float, float / int
- string (case-sensitive)
- vector (value)
- array (reference)
- object (reference)
!=
The "different" operator returns true if the left argument is different from the right argument, false otherwise.
Applies to:
- boolean
- int
- float
- int / float, float / int
- string (case-sensitive)
- vector (value)
- array (reference)
- object (reference)
Logical
&&
The "and" operator returns true if both left and right conditions are true.
||
The "or" logical operator returns true if left or right condition is true (or both).
!
The "not" logical operator inverts a boolean value: true becomes false and false becomes true.
It can also be used on:
- int or float (0 comparison)
- string (empty string comparison - usage of the string.IsEmpty() method is preferred)
- object (null comparison)
Bitwise
&
The "bitwise AND" operator applies a AND operation between values bits - both bits must be 1 to return 1, otherwise 0 is returned.
|
The "bitwise OR" operator applies a OR operation between values bits - one of the bits must be 1 to return 1, otherwise 0 is returned.
~
The "bitwise NOT" operator reverts all bits of the provided value: 1 becomes 0 and vice-versa.
<<
The left shift operator moves all bits of the provided value to the left.
>>
The right shift operator moves bits of the provided value to the right.
String
+
The "adds" operator used with strings concatenates them. When it is used with string and another type, it will stringify (calling its .ToString() method) the other value. The left argument must be of string type for it to happen.
Indexing
[]
The "get index" operator is used on arrays to get an element by its zero-based index (e.g 0 is first element, 1 is second, etc). It can also be used on strings, as strings are arrays of characters.
Precedence
Operators precedence (one having execution priority over another) in Enforce Script is identical to the C language: see the Wikipedia article section.