2.4 KiB
Logic Operators
{{#include ../links.md}}
Comparison Operators
Operator | Description |
---|---|
== |
equals to |
!= |
not equals to |
> |
greater than |
>= |
greater than or equals to |
< |
less than |
<= |
less than or equals to |
Comparing most values of the same data type work out-of-the-box for all [standard types] supported by the system.
However, if using a [raw Engine
] without loading any [packages], comparisons can only be made between a limited
set of types (see [built-in operators]).
42 == 42; // true
42 > 42; // false
"hello" > "foo"; // true
"42" == 42; // false
Comparing two values of different data types, or of unknown data types, always results in false
,
except for '!=
' (not equals) which results in true
. This is in line with intuition.
42 == 42.0; // false - i64 cannot be compared with f64
42 != 42.0; // true - i64 cannot be compared with f64
42 > "42"; // false - i64 cannot be compared with string
42 <= "42"; // false - i64 cannot be compared with string
let ts = new_ts(); // custom type
ts == 42; // false - types cannot be compared
ts != 42; // true - types cannot be compared
Boolean operators
Operator | Description | Short-Circuits? |
---|---|---|
! (prefix) |
boolean NOT | no |
&& |
boolean AND | yes |
& |
boolean AND | no |
|| |
boolean OR | yes |
| |
boolean OR | no |
Double boolean operators &&
and ||
short-circuit – meaning that the second operand will not be evaluated
if the first one already proves the condition wrong.
Single boolean operators &
and |
always evaluate both operands.
a() || b(); // b() is not evaluated if a() is true
a() && b(); // b() is not evaluated if a() is false
a() | b(); // both a() and b() are evaluated
a() & b(); // both a() and b() are evaluated
All boolean operators are [built in][built-in operators] for the bool
data type.