Programmer Guide/Command Reference/EVAL Intro/EVAL: Difference between revisions
(→Syntax) |
|||
Line 63: | Line 63: | ||
A C<nowiki>-</nowiki>like '<code>? :'</code> operator is also supported: | A C<nowiki>-</nowiki>like '<code>? :'</code> operator is also supported: | ||
result := eval 1 < 2 ? 1+2 : 1-2 // result is 3 | |||
Note that unlike C, nested uses of this operator must be surrounded by brackets, e.g.: | Note that unlike C, nested uses of this operator must be surrounded by brackets, e.g.: | ||
result := eval 1 > 2 ? (5 == 5 ? 5 : 0) : (4 == 5 ? 3 : 4) // result is 4 | |||
=== Examples === | === Examples === |
Revision as of 20:57, 22 March 2011
The EVAL
command can be used to evaluate numerical expressions. These expressions can be constants, scalar variables, vectors, matrices or EVAL
subcommands.
// if the variable #v does not exist then the following command // assigns a table item to #v. $#v := eval vv(1,2,3,4) // if #v is a value item, then #v remains a value item.
Contents
Syntax
An EVAL
command uses the following general syntax:
result := eval expression result := evalcheck expression
An expression may be either a numerical expression, e.g.
result := eval (5 * 10) % 3
or a subcommand, e.g.
result := eval init(10,1,1)
or a combination thereof:
result := eval 5+max(fill(6,1,1))
If the expression is syntactically ill-formed, an error (EVAL
) or warning (EVALCHECK
) is reported. See the example script expression_check.sts
for details.
Numerical Comparison Operators
The EVAL
command supports the following numerical comparison operators:
>
|
less than |
<
|
greater than |
<=
|
less than or equal to |
>=
|
greater than or equal to |
==
|
equal to |
!=
|
not equal to |
Note that two numbers/vectors/matrices are considered equal if (and only if)
- their dimensions are the same; and
- all elements are numerically equal.
Logical Operators
The EVAL
command supports the following logical operators:
|
logical or | |
&&
|
logical and | |
!
|
unary not |
A C-like '? :'
operator is also supported:
result := eval 1 < 2 ? 1+2 : 1-2 // result is 3
Note that unlike C, nested uses of this operator must be surrounded by brackets, e.g.:
result := eval 1 > 2 ? (5 == 5 ? 5 : 0) : (4 == 5 ? 3 : 4) // result is 4
Examples
See the script eval_examples.sts
for an extensive list of examples.
Version History
The EVAL
command was added to the S_TOOLS-STx language in version 3.7.0. The EVAL
command replaces and extends the EVALUATE
command. If the EVAL
command is not assigning to an existing item, a table is assigned. Note that the current maximum number of arguments is 64 (S_TOOLS-STx version 3.8.0). As of version 3.7.0, S_TOOLS-STx has more numerical objects than just the scalars INT
and NUM
.