Are they the same in Lua using "or"

if or then
if or 5 then

The first “if” statement works correctly, the second “if” statement doesn’t. See the example. I’m not sure exactly what the second “if” statement is doing without seeing the low level code.

function setup()
    for z=1,10 do
        if z==4 or z==5 then
            print("equal 4,5 ",z)
        if z==7 or 8 then
            print("equal 7,8 ",z)

No, they aren’t the same. The second expands to:

if == 4 or "5 is neither false nor nil" then

The parts of a conditional are completely separate.

.@dave1707 @Andrew_Stacey Thanks! It really helps!

Thanks @Andrew_Stacey , that explains the 2nd “if” statement for me also.

Would this work?

if == (4 or 5) then ... end

No. (4 or 5) expands to “if 4 is not false or nil then 4 else 5” so if == (4 or 5) then ... end is equivalent to if == 4 then ... end.

It can be useful to have lua on your desktop to experiment with these things. For the above, I tried:

for a=1,10 do
  if a == (3 or 4) then
    print(a .. " matches")

and got just:

3 matches

cool. thanks for clarifying!