%, last

Доступ к ранее вычисленному объекту

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

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

Синтаксис

%
% n
last(n)

Описание

last() или % возвращают результат последней команды.

last(n) или %n возвращают результат n th предыдущая команда.

По умолчанию MuPAD® хранит последние 20 команд и их результаты во внутренней таблице истории. last(n) возвращает запись результата n th элемент в этой таблице, считаемой от конца таблицы. Таким образом last(1) возвращает результат последней команды, last(2) возвращает результат рядом с в последний раз один, и т.д. Вместо last(n), который можно также записать более кратко %n. Вместо last(1) или %1, можно использовать еще более кратко %.

HISTORY переменной окружения определяет количество предыдущих результатов, к которым можно получить доступ на интерактивном уровне, т.е. количестве записей в таблице истории. В процедурах длина этой таблицы всегда равняется 3, независимому от значения HISTORY. Таким образом допустимые значения для n являются целыми числами между 1 и HISTORY на интерактивном уровне, и целыми числами 1, 2, 3 в процедуре.

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

Результат, возвращенный last или %, не оценен снова. Используйте функциональный eval, чтобы обеспечить последующую оценку. Смотрите Пример 4.

Примечание

last ведет себя по-другому на интерактивном уровне и в процедурах. На интерактивном уровне, составных операторах, таких как for, repeat, и циклы while и if и команды ветвления case, хранится в таблице истории в целом. В процедурах операторы в составном операторе хранятся в отдельной таблице истории этой процедуры, но не самом составном операторе. Смотрите Пример 5.

Команды и их результаты хранятся в таблице истории, даже если вывод подавлен двоеточием. Таким образом результат last(n) может отличаться от n th предыдущий вывод, который видим на экране на интерактивном уровне. Смотрите Пример 1.

Команды, появляющиеся на той же входной строке, ведут, чтобы разделить записи в таблице истории, если они разделяются двоеточием или точкой с запятой. Напротив, последовательность выражения рассматривается как одна команда. Смотрите Пример 2.

Команды, которые читаются из файла через fread или read, хранятся в таблице истории перед fread или самой командой read. Если опция, Plain используется, то отдельная таблица истории допустима в файле и командах из файла, не появляется в таблице истории контекста включения. Смотрите страницу справки history для примеров.

Используя last в процедурах обычно рассматривается плохим стилем программирования и поэтому удерживается от использования. Будущие релизы MuPAD больше не могут поддерживать использование last в рамках процедур.

Если сокращенный синтаксис, %n используется, то n должен быть положительным целым числом буквально. Если дело обстоит не так, но n оценивает к положительному целому числу, используйте эквивалентное функциональное обозначение last(n) (см. Пример 3).

Примеры

Пример 1

Вот некоторые примеры для использования last на интерактивном уровне. Обратите внимание на то, что last(n) отсылает к n th ранее вычисленный результат, было ли это отображено или нет:

a := 42;
last(1), %, %1

a := 34: b := 56: last(2) = %2

Пример 2

Команды, появляющиеся на одной входной строке, ведут, чтобы разделить записи в таблице истории:

"First command"; 11: 22; 33:

last(1), last(2);

Если последовательность команд заключается в скобки, она рассматривается как одна команда:

"First command"; (11: 22; 33:)

last(1), last(2);

Последовательность выражения также рассматривается как одна команда:

"First command"; 11, 22, 33;

last(1), last(2);

Пример 3

Вследствие того, что синтаксический анализатор MuPAD ожидает номер после знака %, существует различие между использованием % и last. last может быть вызван выражением, которое оценивает к положительному целому числу:

n := 2: a := 35: b := 56: last(n)

Если вы пробуете то же самое %, ошибка происходит:

n := 2: a := 35: b := 56: %n
Error: Unexpected 'identifier'. [line 1, col 28]

Пример 4

Результат last не оценен снова:

delete a, b:
c := a + b + a: a:= b: %2

Используйте eval, чтобы осуществить оценку:

eval(%)

Пример 5

Мы демонстрируем различие между использованием last на интерактивном уровне и в процедурах:

1: for i from 1 to 3 do i: print(%): end_for:

Здесь last(1) относится к новой записи в таблице истории, которая является 1, выполняемым перед циклом for. Мы можем также проверить это путем осмотра таблицы истории после этих команд. Команда history возвращает список с двумя элементами. Первая запись является ранее вводимой командой MuPAD, и вторая запись является результатом этой команды, возвращенной MuPAD. Вы видите, что таблица истории содержит целый цикл for как одну команду:

history(history() - 1), history(history())
[1, 1], [(for i from 1 to 3 do
  i;
  print(%)
end_for), null()]

Однако, если цикл for, заданный выше, выполняется в процедуре, то мы получаем различный результат. В следующем примере last(1) относится к последнему выполненному выражению, а именно, i в цикле:

f := proc()
begin
  1: for i from 1 to 3 do i: print(last(1)): end_for
end_proc:
f():

Команда history относится только к интерактивным входным параметрам и их результатам:

history(history())

Параметры

n

Положительное целое число

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

Объект MuPAD.

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

Функции MuPAD