Lua - if statement with two conditions on the same variable?

Mateus picture Mateus · Jan 24, 2012 · Viewed 68k times · Source

How can I set a lower and upper bound value for a variable in a if-statement in lua programming language? I need something like the pseudocode below.

if ("100000" >= my_variable <= "80000") then
     do stuff...
end

I've tried different formats but my application keeps crashing.

Update:

To anyone with the same sort of doubts about lua's syntax, i'd recommend checking the documentation here and keeping it handy. It'll be useful while learning.

Answer

voithos picture voithos · Jan 24, 2012

You should convert your string to a number, if you know for sure that it should be a number, and if there is no reason for it to be a string.

Here's how to do a comparison for a range:

myVariable = tonumber(myVariable)

if (100000 >= myVariable and myVariable >= 80000) then
    display.remove(myImage)
end

Notice the and. Most programming languages don't expand the form x < y < z to x < y AND y < z automatically, so you must use the logical and explicitly. This is because one side is evaluated before the other side, so in left-to-right order it ends up going from x < y < z to true < z which is an error, whereas in the explicit method, it goes from x < y AND y < z to true AND y < z to true AND true, to true.