Operators
Mathematical Operators
Operator | Title | Description |
---|---|---|
+ | add | -- |
- | subtract | -- |
/ | divide | -- |
* | multiply | -- |
^ | exponentiate | Raises one number to the power of another, e.g. 2 ^ 2 is 4 |
% | modulus | Returns the remainder of a number, e.g. 5 % 2 is 1 |
MOD | modulus | Returns the remainder of a number, e.g. 5 mod 2 is 1 |
\ | integer divide | Divides giving an integer result, e.g. 7 \ 2 is 3 |
++ | increment | Increments a number. Can be used before or after an assignment, e.g. a = b++ would assign the value of b to a, then increment b. a = ++b would increment b, then assign the new value to a. In both cases, b would be incremented. |
-- | decrement | Decrements a number. Can be used before or after an assignment, e.g. a = b-- would assign the value of b to a, then decrement b. a = --b would decrement b, then assign the new value to a. In both cases, b would be decremented. |
+= | Compound add | A shorthand operator for adding to a value, e.g. a += b is equivalent to writing a = a + b |
-= | Compound subtract | A shorthand operator for subtracting from a value, e.g. a -= b is equivalent to writing a = a - b |
*= | Compound multiply | A shorthand operator for multiplying a value, e.g. a = b is equivalent to writing a = a b |
/= | Compound divide | A shorthand operator for dividing a value, e.g. a /= b is equivalent to writing a = a / b |
0:2 | 1:2 | 2:2 |
Logical Operators
0:0 | 1:0 | 2:0 |
---|---|---|
! | logical inversion | ! true is false |
NOT | logical inversion | not true is false |
AND | logical and | Returns true if both operands are true, e.g. 1 eq 1 and 2 eq 2 is true |
&& | logical and | Returns true if both operands are true, e.g. 1 == 1 && 2 == 2 is true |
OR | logical or | Returns true if either or both operands are true, e.g. 1 eq 1 or 2 eq 3 is true |
|| | logical or | Returns true if either or both operand are true, e.g. 1 == 1 || 2 == 3 is true |
XOR | logical exclusive or | Returns true if either operand is true, but not both, e.g. 1 == 1 XOR 2 == 3 is true, but 1 == 1 XOR 2 == 2 is false |
0:2 | 1:2 | 2:2 |
Comparison Operators
0:0 | 1:0 | 2:0 |
---|---|---|
EQ | equals | Returns true if operands are equal, e.g. "A" EQ "A" is true |
== | equals | Returns true if operands are equal, e.g. "A" == "A" is true |
=== | identical | Returns true if operands are equal in value, and are of the same type, e.g. 1 === "1" is false, but 1 === 1 is true |
NEQ | does not equal | Returns true if operands are not equal, e.g. "A" NEQ "B" is true |
<> | does not equal | Returns true if operands are not equal, e.g. "A" <> "B" is true |
!= | does not equal | Returns true if operands are not equal, e.g. "A" != "B" is true |
!== | is not identical | Returns true if operands are not equal or not of the same type, e.g. 1 !== "1" is true, but 1 !== 1 is false |
GT | greater than | Returns true if the operand on the left is has a higher value than the operand on the right, e.g. 1 GT 2 is false |
> | greater than | Returns true if the operand on the left is has a higher value than the operand on the right, e.g. 1 > 2 is false |
LT | less than | Returns true if the operand on the left has a lower value than the operand on the right, e.g. 1 LT 2 is true |
< | less than | Returns true if the operand on the left has a lower value than the operand on the right, e.g. 1 < 2 is true |
GTE | greater than or equal to | Returns true if the operand on the left has a value higher than or equal to the operand on the right, e.g. 2 GTE 2 is true |
>= | greater than or equal to | Returns true if the operand on the left has a value higher than or equal to the operand on the right, e.g. 2 >= 2 is true |
LTE | less than or equal to | Returns true if the operand on the left has a value lower than or equal to the operand on the right, e.g. 2 LTE 2 is true |
<= | less than or equal to | Returns true if the operand on the left has a value lower than or equal to the operand on the right, e.g. 2 <= 2 is true |
CONTAINS | contains | Returns true if the left operand contains the right operand, e.g. "SMILES" CONTAINS "MILE" is true |
CT | contains | Returns true if the left operand contains the right operand, e.g. "SMILES" CT "MILE" is true |
DOES NOT CONTAIN | does not contain | Returns true if the left operand does not contain the right operand, e.g. "SMILES" DOES NOT CONTAIN "RHUBARB" is true |
NCT | does not contain | Returns true if the left operand does not contain the right operand, e.g. "SMILES" NCT "RHUBARB" is true |
0:2 | 1:2 | 2:2 |
String Operators
0:0 | 1:0 | 2:0 |
---|---|---|
& | concatenation | Joins two strings, e.g. The result of "Hello" & "World" is "HelloWorld" |
&= | compound concatenation | A shorthand operator that joins two strings, e.g. a &= b would be equivalent to writing a = a & b |
0:2 | 1:2 | 2:2 |
Ternary operator
The ternary operator lets you return results conditionally, in a very compact amount of code:
condition ? value1 : value2
This would return value1 if condition is true, otherwise it would return false. It's comparable to the following logical structure:
<cfif condition>
#value1#
<cfelse>
#value2#
</cfif>
or the function:
iif(condition, "value1", "value2")
For example:
animal = "cat";
writeOutput(animal == "cat"? "Meow" : "Woof");
would output "Meow".
Operators not available in tags
You can use <> > < >= and <= in="" tags, as long as they don't interfere with the tag syntax. In that case you must use the equivalent GT, LT, etc. operators instead.
Casting
Note that in Lucee values are cast to an appropriate type automatically, except when using the identical operators === and !==
For example:
<cfset a = "2">
<cfset b = a ^ 2>
Null-coalescing operator
Will return the first value if not null, otherwise returns the second value
result = firstValue ?: secondValue