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.
Идентификатор a является первым операндом выражения:
prog::find(a + b + c, a)
![]()
Номер 1 несколько раз происходит:
prog::find(f(1, 1, 1), 1)
![]()
Идентификатор 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)
![]()
![]()
Сколько вызовов return sin содержит?
nops([prog::find(sin, return)])
![]()
sin содержит много вызовов return! Однако sin является функциональной средой, и слоты исследованы, также. Чтобы исследовать только основную процедуру, возьмите первый операнд функциональной среды:
nops(prog::find(op(sin, 1), return))
![]()
prog::find может также найти все объекты данного типа:
nops(prog::find(sin, DOM_PROC, Type))
![]()
Чтобы найти только процедуры верхнего уровня, опцию, Depth может использоваться:
nops(prog::find(sin, DOM_PROC, Type, Depth = 1))
![]()
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)
![]()
В этом примере мы показываем, как управлять существующей функцией заменой. Мы используем 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
![]()
|
Любой объект MuPAD |
|
Любой объект MuPAD |
|
Опция, заданная как Эта опция позволяет исследовать операнды данного объекта, которые являются областями, процедурами и функциональными средами, только с глубиной рекурсии
|
|
Когда опция |
Список чисел, которые определяют положение данного объекта в данном выражении или последовательности списков, если выражение несколько раз содержит объект
prog::find может использоваться, чтобы исследовать и управлять комплексными объектами MuPAD с subsop.