G
nil и falseSize: a a a
G
nil и falseG
IS
IS
IS
G
not (not 0) == trueIS
IS
IS
i % 2 ~= 0IS
IS
DEBUG and print("Debug: ...")?IS
IS
IS
0 and print("true") or print("false")lua: ./just_some_lua.lua:70: unexpected symbol near '0'S
0 == true
{} == true
-100500 == true
false == false
if nil then это не выполнится endS
foo = true and 10 or 20 -- foo = 10
bar = false and 10 or 20 -- bar = 20
Print же ничего не возвращает, то есть выражение вродеsomething = 0 and print("true") or print("false") выведет и то и другое:print("true"), которое вернёт nil являющийся ложью. or print("false") — оно выполняется, something теперь равен nil и оба текста вывелись. Для логических функций ты делаешь обёртки возвращающие true или что тебе нужно.S
S
function tprint(...)
print(...)
return true
endили
something = 0 and tprint("true") or tprint("false")
if (0 and tprint("true") or tprint("false")) then
...
end
Вот этот код будет выполнен именно так как тебе хочется, функция возвращает true и не ломает логические выражения ))IS