EVAL Evaluate a String

Section: FreeMat Functions

Usage

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.

Example

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


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). inserted by FC2 system