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).