Boolean
Booleans are very primitive, they can only be 'true' or 'false'.
Comparisons
Aside from equality ==
and inequality !=
, booleans also accept the following operators:
&
logical AND
true & true == true
true & false == false
false & true == false
false & false == false
AND short-circuits expression if left-hand side is false
|
logical OR
true | true == true
true | false == true
false | true == true
false | false == false
OR short-circuits expression if left-hand side is true
%
logical XOR (exclusive OR)
true % true == false
true % false == true
false % true == true
false % false == false
XOR always evaluates both sides of the expression
Bang operator
!!
coerces any type into boolean, like so:
- null -> false
- zero (number) -> false
- non-zero (number) -> true
- empty (text/list/scope) -> false
- non-empty (text/list/scope) -> true
- method -> true
conditional flows (
=>
,?
) will implicitly coerce left-hand side to boolean