if

# Differences

This shows you the differences between two versions of the page.

 — if [2007/05/31 03:59] (current) Line 1: Line 1: + ======Synopsis:​====== + __if__ (<​condition>​) <​then>​ \\ + __if__ (<​condition>​) { <​then>​ } [{ <​else>​ }] \\ + __if__ (<​condition>​) { <​then>​ } elsif (<​condition>​) { <​then>​ } else { <​then>​ } \\ + __if__ (<​condition>​) { <​then>​ } elif (<​condition>​) { <​then>​ } \\ + __if__ (<​condition>​) { <​then>​ } else if (<​condition>​) { <​then>​ } + + ======Description:​====== + __IF__ is the general purpose control statement for testing the truth/false + value of a given condition. ​ If the condition is true, it performs + some action; if false, some alternate action. ​ The condition does not + necessarily need to be a numeric comparison. ​ It may be a function whose + return value is evaluated for truth or falsity, or compared against some + other value (which might also be a function return value). ​ Expressions + are generally of the following forms: + + |(  exp )          |tests for existence of exp (usually a variable) ​         | + |( !exp )          |tests for non-existence of exp          | + |(  exp1 == exp2 ) |tests whether exp1 equals exp2          | + |(  exp1 != exp2 ) |tests whether exp1 does not equal exp2          | + |(  exp1 && exp2 ) |tests for existence of exp1 and exp2          | + |(  exp1 %%||%% exp2 ) |tests for existence of exp1 or exp2 or both          | + |(  exp1 %%^^%% exp2 ) |tests for existence of exp1 or exp2, not both          | + |(  exp1 <  exp2 ) |tests whether exp1 is less than exp2          | + |(  exp1 >  exp2 ) |tests whether exp1 is more than exp2          | + |(  exp1 <= exp2 ) |tests whether exp1 is less than or equal to exp2          | + |(  exp1 >= exp2 ) |tests whether exp1 is more than or equal to exp2          | + + The "​else"​ portion of an __IF__ statement is not required. ​ Additionally,​ + if the "​then"​ portion is only a single statement, the curly braces are + not required either. ​ The expression (exp) is evaluated as though it + were within a \${} construct, such that + + if ( blah ) ... + + would expand "​blah"​ to \$blah, then test the value of \$blah. ​ Variables + can also be placed inside the expression parser, such that + + if ( [\$blah] ) ... + + is equivalent to the previous statement (though it isn't as efficient). + Both forms may be combined in the same expression. ​ Numbers are treated + as constants, so in order to expand numeric expandos, such as \$0, you + must use the expression parser, as above. ​ Strings must also be passed + through the expression parser (otherwise they are interpreted as + variables), and are compared case-insensitively. + + As in C, assignment operators may be used inside __IF__ statements. ​ This is + generally not recommended,​ if only because it can make the code rather + confusing, but there are times when it can prove to be useful. ​ The + following: + + if ( foo = 3 > bar ) ... + + would first set the value of \$foo to 3, and then compare it with \$bar. + Note that the @ operator is not needed (and in fact is not even allowed). + Gratuitous use of parenthesis is recommended with this notation. + + Finally, as with other ircII-EPIC control statements, the curly braces + may be placed anywhere. + + ======Examples:​====== + The following two statements are functionally equivalent: + if ( foo == bar ) echo foo and bar are the same + if ( foo == bar ) { + echo foo and bar are the same + } + + These are also equivalent: + if ( !foo ) ... + unless ( foo ) ... + + Braces are required for a multi-line then portion: + if ( foo == bar ) { + echo foo and bar are the same + echo that's so cool! + } + + Like other control statements, IFs may be embedded: + if ( foo ) { + if ( bar ) { + echo foo and bar are both non-empty! + echo that's so cool! + } + } + + Function return values can be evaluated too: + if ( rmatch(foobar *blah* *bar) ) { + echo it matched + } + + ======Aliases:​====== + [[UNLESS]] is the exact opposite of __IF__. ​ It is essentially the same applying + the negation operator (!) to the entire __IF__ condition. + + ======Other Notes:​====== + The "​then"​ and "​else"​ portions aren't required to contain anything. ​ Use + of the negation operator and [[UNLESS]] obsolete this practice, however. +