Lua - Ternary conditionals
Sometimes, it’s easiest to organize your conditional statements by using what’s known as a ternary statement in cases where you’d like to store either one value or another based on a condition.
The word ternary means “Composed of three parts”; and a ternary statement is a conditional that is composed of three parts:
- A condition
- A result to return if the condition is true
- A result to return if the condition is false
For example, the following code without a ternary:
a = 3 b = 4 if (a < b) then print("a is less than b!") else print("a is greater than or equal to b!") end
could be condensed to:
a = 3 b = 4 message = a < b and "a is less than b!" or "a is greater than or equal to b!" print(message) --> a is less than b!
How does the Ternary operator work?
Feel free to skip this part if you were satisfied by the above explanation. But, if you’re curious on the
oroperator feel free to read on to learn more!
But what exactly is going on here? That ternary statement kind of looks funky. Well, in Lua, the
or operators also double up as a second type of operator that lets you split the type of output you receive.
Each value in a Lua program under the hood (even though they don’t seem to) is considered as either
false. Every value evaluates to
true, except for
Ternary (and other statements using
or) are evaluated from left to right:
andcontinues forward if everything to the left is
orcontinues forward if everything to the left is
falseIf the evaluator can’t continue forward any further, it returns the value from where it’s at.
In the below example, the combination of a statement
and then a value will return the value since anything that isn’t
nil is always true.
a = 3 b = 4 conditionalMessage = a < b and "a is less than b!" print(conditionalMessage) --> "a is less than b!"
or does the opposite:
a = 3 b = 4 conditionalMessage = a < b or "a is less than b!" print(conditionalMessage) --> true
trueas the result of
a < b.