Pref:: postOutput

Действия, после того, как выведено

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

Pref::postOutput(f)
Pref::postOutput(NIL)
Pref::postOutput()

Описание

После результата x, скажем, команды MuPAD® распечатан на экране, f(x) называется и выполняется, прежде чем следующая подсказка для ввода данных пользователем появляется. Это происходит для любого вывода, пока поствывод не выключен через Pref::postOutput(NIL).

После обычного вывода результата x команды MuPAD возвращаемое значение f(x) распечатано на экране с PRETTYPRINT = FALSE. Однако f(x) не возвращает значения к сеансу MuPAD. К этому нельзя получить доступ через last.

Pref::postOutput() возвращает текущее значение поствыходной функции или NIL, соответственно.

Pref::postOutput, возможно в сочетании с Pref::postInput, может использоваться, чтобы произвести информацию о статусе после каждого вывода. Можно думать об информации о таймере, использовании памяти, типы результата и т.д.

Примеры

Пример 1

Здесь, Pref::postOutput используется, чтобы перечислить выходную строку и отобразить тип результата. Это использует глобальную переменную LineNumber, который должен быть инициализирован, прежде чем любой вывод производится. Определение поствыходной операции, а также инициализации глобальной переменной может быть сделано в файле “userinit.mu”, который читается автоматически во время запуска.

Pref::postOutput(
  proc()
  begin
    LineNumber:= LineNumber + 1;
    "Out[" . expr2text(LineNumber). "]: ".
    "type = ".expr2text(op(map([args()], domtype)));
  end_proc):
LineNumber:= 0:
int(x^5*exp(-x), x)

Out[1]: type = DOM_EXPR
int(x^5*exp(-x), x = 0..infinity),
numeric::int(x^5*exp(-x), x = 0..infinity)

Out[2]: type = DOM_INT, DOM_FLOAT

Следующая команда print возвращает пустой объект null() в сеанс MuPAD. Вывод null() подавлен:

print("print returns the void object")

Следующая команда отключена точкой с запятой, чтобы подавить вывод. Следовательно, никакой поствывод не создается, также.

x := sin(2):

Поствывод выключен:

Pref::postOutput(NIL): delete LineNumber, x:

Пример 2

Для любой команды время выполнения должно быть вычислено и отображено. Функция, объявленная в Pref::postInput, устанавливает глобальное значение таймера TIME после каждого входа. После вывода результата функция, объявленная в Pref::postInput, сравнивает текущее время и время начала TIME. Текущий TEXTWIDTH используется, чтобы предварительно ожидать некоторый подходящий пробел через stringlib::format к выравниванию по правой границе информация о таймере:

Pref::postInput(() -> (TIME:= time())):
Pref::postOutput(
  proc() begin
   stringlib::format("Time: ".expr2text(time() - TIME)." msec",
                     TEXTWIDTH-1, Right)
  end_proc):
int(x^10*exp(-x), x)

 
                                           Time: 84.005 msec 
Pref::postInput(NIL): Pref::postOutput(NIL): 
delete T, TIME:

Пример 3

Следующий поствывод перечисляет все идентификаторы со свойствами в результате последней команды MuPAD. Это извлекает indeterminates через indets и использует property::hasprop, чтобы запросить, есть ли у них свойства:

Pref::postOutput(
  proc()
  begin
    select(indets({args()}), property::hasprop);
    "identifiers with properties: " . expr2text(op(%))
  end_proc):
assume(0 < a < b): a + b + c

identifiers with properties: a, b
Pref::postOutput(NIL): delete a, b:

Параметры

f

Функция, которая будет выполняться, после того, как выведено: процедура. Значением по умолчанию этой функции является NIL (никакой поствывод).

Возвращаемые значения

Ранее установите поствыходную функцию.

Смотрите также

Функции MuPAD