Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
BitchX
GitHub Repository: BitchX/BitchX1.3
Path: blob/master/bitchx-docs/5_Programming/if
1074 views
Synopsis:
   if (<condition>) <then>
   if (<condition>) { <then> } [{ <else> }]
   if (<condition>) { <then> } elsif (<condition>) { <then> } else { <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 the same
            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.