Lua Ternary Idiom

Ternary by Precedence

You can find ternary operators in other languages in the following form:

d = a ? b : c

In Lua logical operators and their precedence can be used to achieve the same:

d = a and b or c

Written out with if it would look like this:

if a then
  d = b
else
  d = c
end

If a is true then b will be assigned to d. But if a is false then c will be assigned to d. As a basic rule I like to remember that ‘or’ returns the first value and and returns the second value.

Note that this can also come in handy for other idioms such as default values. But I would advise against constructing complicated logical return structures this way for the sake of readability.