Conditional statements

From Legacy Roblox Wiki
Jump to navigationJump to search

This guide is for absolute beginners. It is intended to familiarize you with conditionals, or conditional statements, in Lua. If you haven't already, please see Your first script as a beginner tutorial. You will learn:

  • What conditional statements are
  • Certain types of conditional statements
  • How to use conditional statements

Discussion

"Conditional statements are a way of responding differently based on the result of a comparison, called a conditional expression."[1]

This means that you are comparing the value of two (or more) expressions. Let's suppose that if 2+3 is equal to 5, then we want Roblox tell us that 2+3 == 5 .

Lua is similar to human language in this regard, we type:

if (2+3) == 5 then
    print ("(2+3)==5")
end
(2+3)==5

Always close an if/then statement with "end", as it marks the closing of the 'if' block.

An illustration of this in a flowchart would be:

Here's another example. Let's evaluate if (10-2) is greater than 3, then tell us that (10-2) > 3 .:

if 10-2 > 3 then
    print("10-2 is greater than 3")
end
10-2 is greater than 3

One last example. Evaluate if 100 is not equal to 4, then tell us that (100~=4).

if 100 ~= 4 then --the '~=' operator means 'not equal to'
    print("100 is not equal to 4")
end
100 is not equal to 4

If

The 'if' condition is the starting statement to all conditional blocks of code. Use the 'if' statement to execute a block of code if the inputted expression is true.

if 2 + 3 == 5 then print ("2+3==5") end
if 5 > 2 then print("5>2") end
if 2 < 5 then print("2<5") end
if 5 >= 5 then print("5>=5") end
if 5 <= 5 then print("5<=5") end
if 1 ~= 100 then print("1~=100") end

2+3==5 (because 5 is equal to 5)
5>2 (because 5 is greater than 2)
2<5 (because 2 is less than 5)
5>=5 (because 5 is greater than or equal to 5)
5<=5 (because 5 is less than or equal to 5)

1~=100 (because 1 is not equal to 100)

Else

In an 'if..else' block of code, the statements under the 'else' block will execute if the 'if' condition is false. Keep in mind that 'else' statements can only be used when there is an 'if' statement.

Let's see this as applied to scripting:

if 10 > 100 then 
    print("10 is greater than 100") 
else 
    print("10 is less than 100") 
end
10 is less than 100

Since 10>100 is false, the then statement won't execute, but the else block will.

Elseif

In an 'if..elseif block of code, the compiler will go from top to bottom, checking whether each, if any, of the conditions are true. If one of the conditions are true, the corresponding block of code will be executed.

"If it is raining, bring your umbrella. Otherwise, if (i.e., "elseif") it is sunny, bring your suntan lotion."

We can use the "elseif" statement. Let's try that in a script:

if 10 > 100 then 
    print("10 is greater than 100") 
elseif 10 > 50 then	
    print("10 is greater than 50") 
elseif 10 < 100 then	
    print("10 is less than 100") 
end
10 is less than 100

The only instance any of the conditions would be true is 10<100, which would result in the printing of "10 is less than 100".

Note: Blocks of 'if..elseif..else' code can be used.

Advanced Usage

To eliminate the need for long and winding if statements, there is another way. It has the following advantages:

  • Makes your script shorter
  • Increases the readability of you script
  • Is simpler to write

Here is an example:

local variable = 1
print(variable == 1 and "The variable is equal to one."
                     or "The variable is not equal to one")
variable = 23
print(variable == 1 and "1"
   or variable == 2 and "2"
   or variable == 3 and "3"
   or                   "Something else")

The variable is equal to one.

Something else

This method uses two operators: "and" and "or".

This could be compared to a if...then and a else statement.

Several elseif...then statements can be rowed up, like in the first example, where the local variable "variable" is compared with several questions and then,

if none of the statements are true, uses the else statement, if that is provided by you.