Spec-Zone.ru › Octave 9

Далее: Операторы, Предыдущее: Выражения [Оглавление][Индекс]

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 или блоков unwind_protect/unwind_protect_cleanup вместо этого. Эти методы обладают более высокой производительностью и не создают проблем безопасности, связанных с выполнением произвольного кода.

См. также: 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.

  • Вызов функции по её имени
  • Оценка в другом контексте

Далее: Операторы, Предыдущее: Выражения [Оглавление][Индекс]

© 1996–2023 The Octave Project Developers
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://docs.octave.org/v9.2.0/Evaluation.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API