alias

Создает псевдоним

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

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

Синтаксис

alias(x1 = object1, x2 = object2, …, <Global>)
alias(<Global>)

Описание

alias(x = object) задает x как сокращение от object. Это изменяет настройку синтаксического анализатора, заменяя identifierx object во входе, и затем заменяющий object x в выводе.

alias(f(y1,y2,...) = object) задает f, чтобы быть макросом. Это изменяет настройку синтаксического анализатора так, чтобы вызов функции формы f(a1, a2, ...), где a1,a2,... является последовательностью произвольных объектов той же длины как y1,y2,..., был заменен object с a1, которым заменяют y1, a2, которым заменяют y2, и так далее. Никакая замена не происходит, если количество параметров y1,y2,... отличается от количества аргументов a1,a2,.... Никакая замена не происходит в выводе.

Можно задать макрос без любых аргументов через alias(f()=object).

alias не оценивает свои аргументы. Следовательно это не имеет никакого эффекта, если искаженный идентификатор имеет значение, и alias создает псевдоним для правой стороны определения псевдонима а не для его оценки. Смотрите Пример 2.

Определение псевдонима вызывает замену, подобную эффекту subs, не только текстовой замене. Смотрите Пример 3.

alias не сглаживает свои аргументы. Четверг, последовательность выражения является допустимой правой стороной определения псевдонима. Смотрите Пример 5.

Псевдоним в действительности со времени, когда вызов alias был оценен. Это влияет точно на те входные параметры, которые анализируются после того момента. Смотрите Пример 9. В частности, определение псевдонима в процедуре не влияет на остальную часть процедуры.

Можно создать несколько определений псевдонима в одном вызове. Сокращения и макросы могут быть смешаны.

alias() отображает все в настоящее время заданные псевдонимы и макросы как последовательность уравнений. Для сокращения, заданного через alias(x = object), уравнение распечатан x = object. Для макроса, заданного через alias(f(y1, y2, ...) = object), уравнение распечатан f(y1, y2, ...) = object. Смотрите Пример 11.

Каждый идентификатор может быть искажен только к одному объекту. Каждый объект может быть сокращен только одним способом. В противном случае alias выдает ошибку.

По умолчанию задняя замена псевдонимов в выводе происходит только для сокращений а не для макросов. После команды формы alias(x = object) и неоцененный объект object и его оценка заменяются неоцененным идентификатором x в выводе. Смотрите Пример 2.

Можно управлять поведением задней замены в выводе с функциональным Pref::alias; смотрите соответствующую страницу справки для деталей.

Замены в выводе только происходят для результатов вычислений на интерактивном уровне. Поведение функций fprint, print, expr2text или write не затронуто.

Замены псевдонима выполняются параллельно, и во входе и в выводе. Таким образом не возможно задать вложенные псевдонимы. Смотрите Пример 10.

Примечание

Если вы используете идентификатор в качестве сокращения, вы не можете использовать тот же самый идентификатор непосредственно. Необходимо использовать unalias, прежде чем можно будет задать другое сокращение или макрос для того же идентификатора. Смотрите Пример 4.

Если макро-f(y1,y2,...,yn) с аргументами n задан, вы не можете вызвать f с аргументами n в его буквальном значении больше. Однако можно все еще вызвать f с различным количеством аргументов. Смотрите Пример 5.

Можно задать макросы с различными количествами аргументов одновременно. Смотрите Пример 4.

Определение псевдонима влияет на все виды входа: интерактивный вход на командной строке, введенной через функциональный input, введенный из файла с помощью finput, fread или read (для последних двух, только если опция Plain не установлена), и, ввел от строки с помощью text2expr. Смотрите Пример 8.

Определение псевдонима не имеет никакого эффекта на идентификатор, используемый в качестве псевдонима. В частности, тот идентификатор сохраняет свое значение и свои свойства. Псевдоним и искаженный объект все еще отличает средство анализа. Смотрите Пример 6.

Присвоение значения к одному из идентификаторов на левой стороне определения псевдонима или удаление его значения не влияют на замену псевдонима, ни во входе, ни в выводе. Смотрите Пример 7.

Взаимодействия среды

alias по крайней мере с одним аргументом изменяет настройку синтаксического анализатора в пути, описанном в разделе “Details”.

Примеры

Пример 1

Задайте d как ярлык для diff:

delete f, g, x, y: alias(d = diff):
d(sin(x), x) = diff(sin(x), x);
d(f(x, y), x) = diff(f(x, y), x)

Задайте макро-Dx(f) для diff(f(x), x). Обратите внимание на то, что hold не предотвращает замену псевдонима:

alias(Dx(f) = diff(f(x), x)):
Dx(sin); Dx(f + g); hold(Dx(f + g))

После вызова unalias(d, Dx) никаких замен псевдонима не происходит больше:

unalias(d, Dx):
d(sin(x), x), diff(sin(x), x), d(f(x, y), x), diff(f(x, y), x);
Dx(sin), Dx(f + g)

Пример 2

Предположим, что вы не хотите ввести longhardtotypeident и поэтому задавать сокращение a для него:

longhardtotypeident := 10;  alias(a = longhardtotypeident):

Поскольку alias не оценивает свои аргументы, a является теперь сокращением от longhardtotypeident а не от номера 10:

type(a), type(hold(a))

a + 1, hold(a) + 1, eval(hold(a) + 1)

longhardtotypeident := 2:
a + 1, hold(a) + 1, eval(hold(a) + 1)

Однако задней заменой псевдонима по умолчанию в выводе происходит и для идентификатора и для его текущего значения:

2, 10, longhardtotypeident, hold(longhardtotypeident)

Команда Pref::alias(FALSE) выключает перезамену псевдонима:

p := Pref::alias(FALSE):
a, hold(a), 2, longhardtotypeident, hold(longhardtotypeident);
Pref::alias(p): unalias(a):

Пример 3

Псевдонимами заменяют и не только заменяют дословно. В следующем примере 3*succ(u) заменяется 3*(u+1), а не 3*u+1, который произвела бы функция поиска-и-замены в текстовом редакторе:

alias(succ(x) = x + 1): 3*succ(u);
unalias(succ):

Пример 4

Задайте a, чтобы быть сокращением от b. Затем следующим определением псевдонима является действительно определение псевдонима для b:

delete a, b:
alias(a = b): alias(a = 2): type(a), type(b); unalias(b):

Используйте unalias сначала прежде, чем задать другой псевдоним для идентификатора a:

unalias(a): alias(a = 2): type(a), type(b); unalias(a):

Макроопределение может быть добавлено, если недавно заданный макрос имеет различное количество аргументов. unalias(a) удаляет все макросы, заданные для a:

alias(a(x)=sin(x^2)): a(y); alias(a(x)=cos(x^2)):

Error: Invalid operand. [_power]
  Evaluating: alias
alias(a(x, y) = sin(x + y)): 
a(u, v); 
alias(): 
unalias(a):

a(x)   = sin(x^2)
a(x, y) = sin(x + y)

Пример 5

Макроопределение не имеет никакого эффекта, когда названо неправильным количеством аргументов, и последовательность аргументов не сглажена:

alias(plus(x, y) = x + y):
plus(1), plus(3, 2), plus((3, 2));
unalias(plus):

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

alias(x = (1, 2)): f := 0, 1, 2, x;
nops(f); unalias(x):

Пример 6

Идентификатор, используемый в качестве сокращения, может все еще существовать в его буквальном значении в выражениях, которые вводились перед определением псевдонима:

delete x: f := [x, 1]: alias(x = 1): f;
map(f, type); unalias(x):

Пример 7

Идентификатор, используемый в качестве псевдонима, не должен иметь значения:

a := 5: alias(a = 7): 7, 5; print(a); unalias(a):

delete a:

Пример 8

Исказите определения, также применяются к входному из файлов или строк:

alias(a = 3): type(text2expr("a")); unalias(a)

Пример 9

Псевдоним допустим для всего входа, который анализируется после выполнения alias. Оператор в командной строке не анализируется, прежде чем предыдущие команды в той командной строке были выполнены. В следующем примере псевдоним уже в действительности для второго оператора:

alias(a = 3): type(a); unalias(a)

Это может быть изменено путем ввода дополнительных круглых скобок:

(alias(a = 3): type(a)); unalias(a)

Пример 10

Задайте b, чтобы быть псевдонимом для c, который в свою очередь задан, чтобы быть псевдонимом для 2. Рекомендуется избежать таких цепочек определений псевдонима из-за, вероятно, нежелательных эффектов.

alias(b=c): alias(c=2):

Теперь каждый b во входе заменяется c, но никакой дополнительный шаг замены не сделан, чтобы заменить это снова 2:

print(b)

С другой стороны, номер, 2 заменяется c в каждом выводе и что c затем заменяется b:

2

unalias(c): unalias(b):

Пример 11

Когда названо без аргументов, alias только отображает все в настоящее время заданные псевдонимы:

alias(a = 5, F(x) = sin(x^2)):
alias(); unalias(F, a):
F(x) = sin(x^2)
a   = 5

Параметры

x1, x2,…

Идентификаторы или символьные выражения формы f(y1, y2,…), с идентификаторами f, y1, y2,...

object1, object2,…

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

Опции

Global

Определение псевдонима в глобальном контексте синтаксического анализатора.

Когда псевдоним будет задан в библиотеке или исходном файле пакета, он будет удален автоматически после чтения файла. С опцией Global псевдоним не активен в считанном файле, но на интерактивном уровне после чтения файла закончен.

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

И alias и unalias возвращают пустой объект типа DOM_NULL.

Алгоритмы

Псевдонимы хранятся в таблице настройки синтаксического анализатора, отображенной _parser_config(). Обратите внимание на то, что по умолчанию задняя замена псевдонима происходит для правых сторон уравнений в этой таблице, но не для индексов. Используйте print(_parser_config()), чтобы отобразить эту таблицу без задней замены псевдонима.

Псевдонимы не используются, в то время как файл читается с помощью read или fread с опцией Plain. С другой стороны, если псевдоним задан в файле, который читается с опцией Plain, псевдоним только используется, пока файл не был считан полностью.

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

Функции MuPAD