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 вместо этого. Эти методы обладают более высокой производительностью и не вводят соображения безопасности, связанные с оценкой произвольных команд.
Функция 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
| • Вызов функции по имени |
| • Оценка в другом контексте |
© 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/v6.4.0/Evaluation.html