|
FreeMat
|
Section: FreeMat Functions
The 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.
Here are some examples of eval being used.
--> eval('a = 32')
a =
32
--> b = eval('a')
b =
32
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
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')
b =
33
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).