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
.