COND

From STX Wiki
Jump to navigation Jump to search

The COND command performs a conditional assignment.

Usage

[ target := ] COND condition ? expr1 : expr2
target
is a normal assignment target, usually the name of an STx variable, e.g. #var. If no target is specified, a conditional execution is performed.
condition
is a conditional expression like used with the IF statement and the miscellaneous conditional control commands.
Note that with conditional STx expressions there must always be intervening whitespaces between operators and their arguments (unless the argument is quoted). So, both $#a == 7 and '$#a'=='7' are valid expression, whereas $#a==7 is not.
expr1, expr2
Both expr1 and expr2 may be any commands, with the only exception of all control commands. If, at runtime, the conditional expression condition evaluates to truth, the first command expr1 will be executed, otherwise the second expr2. If target is specified, the return value of the executed command is assigned.

Notes

  • The COND command is processed by the loader, and is therefore not available in the command line interface.
  • The COND command may not contain a nested COND command.

See also

conditonal assignment with EVAL, control commands, IF

Examples

#min := cond $#a < $#b ? $#a : $#b                         // calculate minimum of #a and #b
#abs := cond $#a < 0 ? num -$#a : $#a                      // calculate absolute value of #a
#abs := cond $#a < 0 ? eval $#a*(-1) : $#a                 // an alternative to the above
#absdiff := cond $#a > $#b ? eval $#a-$#b : eval $#b-$#a   // absolute difference
#len := cond $(length $#a) > 0 ? length $#a : length $#b   // length of #a or, if empty, of #b
cond '$#item[?]' == table ? gosub useTable $#item : gosub useOtherItem $#item

See the file conditional_assignment.sts for further working examples.