prog::find

Найдите операнды объектов

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

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

Синтаксис

prog::find(obj, piece, <Depth = d>, <Type>)

Описание

prog::find(obj, piece) возвращает положение объекта piece в объекте obj MuPAD® как список. Список представляет “путь” к данному объекту. С этим списком и функциями op и subsop, к объекту можно непосредственно получить доступ.

Путь к объекту piece список, который содержит целые числа i1, ..., in.

Значением является тот piece in- операнд th (in - 1)- операнд Св. и т.д. i1- операнд Св. данного объекта obj.

Утвержденный по-другому, op(ex, [i1, ..., in]) = opr.

Если искавший объект содержит несколько раз, последовательность списков возвращена.

Пустой список  [ ] когда путь определяет объект obj самостоятельно.

Примеры

Пример 1

Идентификатор a первый операнд выражения:

prog::find(a + b + c, a)

Номер 1 несколько раз происходит:

prog::find(f(1, 1, 1), 1)

Пример 2

Идентификатор a первый операнд второго операнда первого операнда выражения:

prog::find(b*(a - 1) + b*(x - 1), a)

Результат prog::find может использоваться, чтобы получить доступ к элементу с op или замените его на subsop:

op(b*(a - 1) + b*(x - 1), [1, 2, 1]);
subsop(b*(a - 1) + b*(x - 1), [1, 2, 1] = A)

Пример 3

Сколько вызовов return делает sin содержать?

nops([prog::find(sin, return)])

sin содержит многих return вызовы! Однако sin функциональная среда, и пазы исследованы, также. Чтобы исследовать только основную процедуру, возьмите первый операнд функциональной среды:

nops(prog::find(op(sin, 1), return))

Пример 4

prog::find может также найти все объекты данного типа:

nops(prog::find(sin, DOM_PROC, Type))

Найти только процедуры верхнего уровня, опцию Depth может использоваться:

nops(prog::find(sin, DOM_PROC, Type, Depth = 1))

Пример 5

prog::find работает с таблицами, и другой содержит, также:

T := table(1 = sin(x), 2 = cos(x), 3 = tan(x),
           4 = tan(y), 5 = sin(y), 6 = cos(y)):
prog::find(T, sin)

prog::find(T, "cos", Type)

Пример 6

В этом примере мы показываем, как управлять существующей функцией заменой. Мы используем subsop для замены и prog::find получить путь для замены. Здесь мы заменяем ^- функция функциональным mypower который дополнительно считает количество его вызовов:

f := x -> `+`(x^j $ j = 1 .. random(10)()):
mypower := (b, e) -> (count := count + 1;  b^e):
map([prog::find(f, `^`)],
    X -> (f := subsop(f, X = mypower))):

После вызова функционального f десять раз в цикле, мы видим получившееся количество вызовов ^ в count:

count := 0:
for i from 1 to 10 do f(i); end:
count

Параметры

obj

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

piece

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

Опции

Depth

Опция, заданная как Depth = d

Эта опция позволяет исследовать операнды данного объекта, которые являются областями, процедурами и функциональными средами, только с глубиной рекурсии d.

Опция Depth может использоваться, чтобы найти процедуры, но не локально определенные процедуры в процедурах, которые были найдены в первом шаге.

Type

Когда опция Type дан, prog::find не ищет положения p в obj таким образом, что op(obj, p) = piece, а скорее те с testtype(op(obj, p), piece) = TRUE. См. пример 4.

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

Список чисел, которые определяют положение данного объекта в данном выражении или последовательности списков, если выражение несколько раз содержит объект

Алгоритмы

prog::find может использоваться, чтобы исследовать и управлять комплексными объектами MuPAD с subsop.

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

Функции MuPAD