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.

Примеры

Пример 1

Мы инициализируем назначение слотов, рассчитывающее слота "foo":

slotAssignCounter("foo")

Затем мы задаем функциональный f со слотом "foo":

f := funcenv(f):
f::foo := bar:

Теперь счетчик имеет значение 1:

slotAssignCounter("foo")

Пример 2

Здесь мы задаем функцию рекурсивного вызова 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:

Параметры

key

Любой объект MuPAD®

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

Неотрицательное количество типа DOM_INT.

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

Функции MuPAD