L
L
Leatington2021-10-18 18:51:00
Lua
Leatington, 2021-10-18 18:51:00

How to set nil to a variable in a Lua ternary expression?

In theory, the code should set nil, but in fact there 2
Is there a way to make it a ternary expression?

local i = 1
local k = 1

local res = ((i == k) and nil or 2)

print(tostring(res))

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
dollar, 2021-10-18
@Leatington

This is not exactly a ternary operator, but rather a combination of and and or .
Expression: Same as ternary operator (which is not in Lua), only if B is true.
A and B or C

(proof)

Для начала вспомним некоторые правила синтаксиса Lua:
  • and возвращает первый операнд, если он ложный, иначе второй.
  • or возвращает первый операнд, если он истинный, иначе второй.
  • and имеет выше приоритет (т.е. выполняется первым).
  • Ложными в Lua являются только false и nil

Теперь построим таблицу истинности результатов:
616d9c7ad77a1439930797.png

So the solution is:
local res = ((i ~= k) and 2 or nil)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question