slotAssignCounterНазначения слотов количеств
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
slotAssignCounter(key)
slotAssignCounter(key) возвращает количество slot присвоения с ключом key начиная с инициализации счетчика. Счетчик для key инициализируется с 0 на первом вызове slotAssignCounter(key). Предыдущие присвоения с ключом key не считаются.. Эта функция служит очень технической цели. Обычно, не должно быть никакой потребности в пользователе вызвать эту функцию.
slotAssignCounter только присвоения количеств на пазы областей и функциональных сред.
slotAssignCounter был введен как функция проверки зависимости для prog::remember. Смотрите пример 2.
Мы инициализируем назначение слотов, рассчитывающее паза "foo":
slotAssignCounter("foo")![]()
Затем мы задаем функциональный f с пазом "foo":
f := funcenv(f): f::foo := bar:
Теперь счетчик имеет значение 1:
slotAssignCounter("foo")![]()
Здесь мы задаем функцию рекурсивного вызова foo какие перегрузки для доменных элементов. Функция помнит вычисленные значения с prog::remember:
foo := x -> (if x::dom::foo <> FAIL then return(x::dom::foo(x)) end_if;
if x = op(x) then procname(x) else map(x, foo) end_if):
foo := prog::remember(foo):Затем мы задаем доменный bar который не перегружает паз "foo":
bar := newDomain("bar"):
bar::new := x -> new(bar, x):
bar::print := x -> hold(bar)(extop(x)):
bar::op := id:
foo(bar(2))![]()
Теперь мы добавляем "foo" паз к bar:
bar::foo := x -> 4: foo(bar(2))
![]()
Новый паз не использовался, потому что foo взял результат помнить таблицу. Если мы используем функцию зависимости с slotAssignCounter в prog::remember, мы можем сделать foo зная об изменениях в "foo"- пазы других функций и областей:
foo := x -> (if x::dom::foo <> FAIL then return(x::dom::foo(x)) end_if;
if x = op(x) then x else map(x, foo) end_if):
foo := prog::remember(foo, () -> slotAssignCounter("foo")):
foo(bar(2));
bar::foo := x -> 5:
foo(bar(2))![]()
![]()
delete foo, bar:
|
Любой объект MuPAD® |
Неотрицательное количество типа DOM_INT.