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печать, expr2text, или write не затронут.

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

Примечание

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

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

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

Определение псевдонима влияет на все виды входа: интерактивный вход на командной строке, введенной через функциональный input, введите из файла с помощью finputfread, или 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