Difference between revisions of "If"

From the Oblivion ConstructionSet Wiki
Jump to navigation Jump to search
imported>Gblues
(added info about logical operators being unaffected by parenthesis)
imported>JOG
m (→‎Combining Comparisons: who said parantheses don't work?)
Line 66: Line 66:
|}
|}


Note that while multiple logical operators can be used, the operators are always evaluated from left to right regardless of parentheses. For example:


<nowiki>if myVar1 == 1 && (myVar2 == 1 || myVar2 == 5)</nowiki>
Note that "||" is evaluated before "&&", just like "*" is evaluated before "+". in normal algebra.


Logically, this should say "if myVar is 1 AND myVar2 is either 1 or 5..." but in Oblivion, this will be evaluated as "if myVar is 1 AND myVar2 is 1, or if myVar2 is 5, ..." (thanks MaXiMiUS and JOG for testing this)
If you want the && to be evaluated first, you have to include that part in parentheses. For example:
 
<nowiki>if myVar1 == 1 && myVar2 == 1 || myVar2 == 5</nowiki>
 
This is true when MyVar1 = 1 AND myVar2 is either 1 or 5.
 
<nowiki>if (myVar1 == 1 && myVar2 == 1) || myVar2 == 5</nowiki>
 
This is true when either myVar2 is 5 OR both, myVar1 and myVar2 are 1


== Comparisons and Expressions ==
== Comparisons and Expressions ==

Revision as of 03:45, 17 April 2006

The if statement allows you to execute (or not execute) a block of script commands based on one or more comparisons that you specify. Oblivion's if command is very powerful and comparable to "real" programming languages.

Overview

An if statement uses the following syntax:

if expressionA [comparison] expressionB
; test "expressionA [comparison] expressionB" passed
elseif expressionB [comparison] expressionC
; test "expressionB [comparison] expressionC" passed
else
; none of the above tests passed
endif

The else and elseif statements are optional.

Comparison Operators

An if statement may contain one or more comparison operators. Below is a table of valid comparison operators:

Operator Description
== Exactly equal to
!= Not equal to
> Greater than
>= Greater than or equal to
< Less than
<= Less than or equal to

It is important to note that there are no bitwise comparisons available in Oblivion's scripting language.

Combining Comparisons

Comparisons can be linked together using the following logical operators:

Operator Description Example
&& Logical AND if x == 1 && y == 1 ; considered true only if both x and y equal 1.
|| Logical OR if x == 1 || y == 1 ; considered true unless both x and y equal 0.


Note that "||" is evaluated before "&&", just like "*" is evaluated before "+". in normal algebra.

If you want the && to be evaluated first, you have to include that part in parentheses. For example:

if myVar1 == 1 && myVar2 == 1 || myVar2 == 5

This is true when MyVar1 = 1 AND myVar2 is either 1 or 5.

if (myVar1 == 1 && myVar2 == 1) || myVar2 == 5

This is true when either myVar2 is 5 OR both, myVar1 and myVar2 are 1

Comparisons and Expressions

The comparison operators can be used with any expression that can be evaluated into a number. Assuming "a = 17", "b = 20" and "c = a - b", all of the following expressions work as expected. Parentheses are only needed when they're necessary for mathematical reasons.

IF c == -3 && b == 20
IF c == -3 && b == 20 && a == 17
IF c - 1 == -4 && b == 20 && a == 17
IF a - 20 == 17 - b
IF a - 20 == 17 - b && c + 3 == 0
IF a + 3 == b
IF a - b == c
IF a *4 - b * 4 == c * 4
IF a * ( 5 + c ) - 14 == b
IF 2*(a*(5+c)-14)==b - -b