9评估

通常,只需在Octave提示下输入表达式,或要求Octave解释保存在文件中的命令,即可计算表达式。

有时,您可能会查找有必要对已计算并存储在字符串中的表达式进行求值,这正是eval函数允许您这样做。

 
: eval (try)
: eval (try, catch)

分析字符串try并将其被认为是Octave程序。

如果执行失败,请计算可选字符串catch.

字符串try在当前上下文中进行评估,因此任何结果在之后都可用eval返回。

以下示例创建变量A在当前起作用空间中近似值为3.1416。

eval ("A = acos(-1);");

如果在评估过程中出现错误try然后catch字符串,如下例所示:

eval ('error ("This is a bad example");',
      'printf ("This error occurred:\n%s\n", lasterr ());');
     -| This error occurred:
        This is a bad example

编程注意事项:如果您仅使用eval作为一种错误捕获机制,而不是用于执行任意代码字符串,请考虑使用try/catch块或ununwind_protect/unnnd_protect_cleanupblocks。这些技术具有更高的性能,并且不会像评估任意代码那样引入安全考虑。

详见: evalin, evalc, assignin, feval.

广告

这里的evalc函数还捕获从求值表达式返回的任何控制台输出。

 
: s = evalc (try)
: s = evalc (try, catch)

分析和评估字符串try就好像它是一个Octave程序,同时将输出捕获到返回变量中s.

如果执行失败,请计算可选字符串catch.

此函数的行为类似eval,但通常会写入控制台的任何输出或警告消息都会被捕获并以字符串形式返回s.

这里的diary在执行此函数期间被禁用。当system使用时,外部程序返回的任何输出捕获,除非它们的输出被捕获system函数本身。

s = evalc ("t = 42"), t
  ⇒ s = t =  42

  ⇒ t =  42

详见: eval, diary.

广告

版权所有 © 2024-2025 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号-2