9 Evaluation
Normally, you evaluate expressions simply by typing them at the Octave prompt, or by asking Octave to interpret commands that you have saved in a file.
Sometimes, you may find it necessary to evaluate an expression that has been computed and stored in a string, which is exactly what the eval
function lets you do.
- : eval (try)
- : eval (try, catch)
-
Parse the string try and evaluate it as if it were an Octave program.
If execution fails, evaluate the optional string catch.
The string try is evaluated in the current context, so any results remain available after
eval
returns.The following example creates the variable A with the approximate value of 3.1416 in the current workspace.
eval ("A = acos(-1);");
If an error occurs during the evaluation of try then the catch string is evaluated, as the following example shows:
eval ('error ("This is a bad example");', 'printf ("This error occurred:\n%s\n", lasterr ());'); -| This error occurred: This is a bad example
Programming Note: if you are only using
eval
as an error-capturing mechanism, rather than for the execution of arbitrary code strings, Consider using try/catch blocks or unwind_protect/unwind_protect_cleanup blocks instead. These techniques have higher performance and don’t introduce the security considerations that the evaluation of arbitrary code does.
The evalc
function additionally captures any console output produced by the evaluated expression.
- : s = evalc (try)
- : s = evalc (try, catch)
-
Parse and evaluate the string try as if it were an Octave program, while capturing the output into the return variable s.
If execution fails, evaluate the optional string catch.
This function behaves like
eval
, but any output or warning messages which would normally be written to the console are captured and returned in the string s.The
diary
is disabled during the execution of this function. Whensystem
is used, any output produced by external programs is not captured, unless their output is captured by thesystem
function itself.s = evalc ("t = 42"), t ⇒ s = t = 42 ⇒ t = 42
• Calling a Function by its Name |
• Evaluation in a Different Context |
© 1996–2020 John W. Eaton
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://octave.org/doc/v6.3.0/Evaluation.html