Spec-Zone.ru › Octave 5

9 Оценка

Обычно выражения оцениваются просто вводом их в приглашение Octave или путем запроса к Octave интерпретировать команды, сохраненные в файле.

Иногда может потребоваться оценить выражение, которое было вычислено и сохранено в строке, что позволяет сделать функция %%%NON_TRANSLABLE_0%%%.

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–2022 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/v5.2.0/Evaluation.html

Spec-Zone.ru

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