%
, 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
повторение
, и 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).
Вот некоторые примеры для использования last
на интерактивном уровне. Обратите внимание на то, что last(n)
относится к n
th ранее вычислил результат, было ли это отображено или нет:
a := 42; last(1), %, %1
a := 34: b := 56: last(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);
Вследствие того, что синтаксический анализатор 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]
Результат last
не оценен снова:
delete a, b: c := a + b + a: a:= b: %2
Используйте eval
осуществлять оценку:
eval(%)
Мы демонстрируем различие между использованием 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())
|
Положительное целое число |
Объект MuPAD.