Section: FreeMat Functions
eval function evaluates a string. The general syntax
for its use is
eval(s)
where s is the string to evaluate. If s is an expression
(instead of a set of statements), you can assign the output
of the eval call to one or more variables, via
x = eval(s) [x,y,z] = eval(s)
Another form of eval allows you to specify an expression or
set of statements to execute if an error occurs. In this
form, the syntax for eval is
eval(try_clause,catch_clause),
or with return values,
x = eval(try_clause,catch_clause) [x,y,z] = eval(try_clause,catch_clause)
These later forms are useful for specifying defaults. Note that
both the try_clause and catch_clause must be expressions,
as the equivalent code is
try
[x,y,z] = try_clause
catch
[x,y,z] = catch_clause
end
so that the assignment must make sense in both cases.
eval being used.
--> eval('a = 32')
a =
32
--> b = eval('a')
b =
32
-->
quit
The primary use of the eval statement is to enable construction
of expressions at run time.
--> s = ['b = a' ' + 2'] s = b = a + 2 --> eval(s) b = 34 --> quit
Here we demonstrate the use of the catch-clause to provide a default value
--> a = 32
a =
32
--> b = eval('a','1')
b =
32
--> b = eval('z','a+1')
In base(base) on line 0
In simkeys(built in) on line 0
In Eval(b = eval('z','a+1')) on line 1
In eval(built in) on line 0
In Eval(t___0 = z;) on line 1
b =
33
-->
quit
Note that in the second case, b takes the value of 33, indicating
that the evaluation of the first expression failed (because z is
not defined).