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
, введите из файла с помощью finput
fread
, или read
(для последних двух, только если опция Plain
не установлен), и введите от строки с помощью text2expr
. Смотрите пример 8.
Определение псевдонима не оказывает влияния на идентификатор, используемый в качестве псевдонима. В частности, тот идентификатор сохраняет свое значение и свои свойства. Псевдоним и искаженный объект все еще отличает средство анализа. Смотрите Пример 6.
Присвоение значения к одному из идентификаторов на левой стороне определения псевдонима или удаление его значения не влияют на замену псевдонима, ни во входе, ни в выходе. Смотрите Пример 7.
alias
по крайней мере с одним аргументом изменяет настройку синтаксического анализатора в пути, описанном в разделе “Details”.
Задайте 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)
Предположим, что вы не хотите вводить 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*succ(u)
заменяется 3*(u+1)
, а не 3*u+1
, который произвела бы функция поиска-и-замены в текстовом редакторе:
alias(succ(x) = x + 1): 3*succ(u); unalias(succ):
Задайте 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)
Макроопределение не оказывает влияния, когда названо неправильным количеством аргументов, и последовательность аргументов не сглажена:
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):
Идентификатор, используемый в качестве сокращения, может все еще существовать в его буквальном значении в выражениях, которые вводились перед определением псевдонима:
delete x: f := [x, 1]: alias(x = 1): f; map(f, type); unalias(x):
Идентификатор, используемый в качестве псевдонима, не должен иметь значения:
a := 5: alias(a = 7): 7, 5; print(a); unalias(a):
delete a:
Исказите определения, также применяются к входному из файлов или строк:
alias(a = 3): type(text2expr("a")); unalias(a)
Псевдоним допустим для всего входа, который анализируется после выполнения alias
. Оператор в командной строке не анализируется, прежде чем предыдущие команды в той командной строке были выполнены. В следующем примере псевдоним уже в действительности для второго оператора:
alias(a = 3): type(a); unalias(a)
Это может быть изменено путем ввода дополнительных круглых скобок:
(alias(a = 3): type(a)); unalias(a)
Задайте b
быть псевдонимом для c
, который в свою очередь задан, чтобы быть псевдонимом для 2
. Рекомендуется избежать таких цепей определений псевдонима из-за, вероятно, нежелательных эффектов.
alias(b=c): alias(c=2):
Теперь каждый b
во входе заменяется c
, но никакой дополнительный шаг замены не сделан, чтобы заменить это снова 2
:
print(b)
С другой стороны, номер 2
заменяется c
в каждом выходе и том c
затем заменяется b
:
2
unalias(c): unalias(b):
Когда названо без аргументов, alias
только отображения все в настоящее время заданные псевдонимы:
alias(a = 5, F(x) = sin(x^2)): alias(); unalias(F, a):
F(x) = sin(x^2)
a = 5
|
Идентификаторы или символьные выражения формы |
|
Любые объекты MuPAD® |
|
Определение псевдонима в глобальном контексте синтаксического анализатора. Когда псевдоним будет задан в библиотеке или исходном файле пакета, он будет удален автоматически после чтения файла. С опцией |
Оба alias
и unalias
возвратите пустой объект типа DOM_NULL
.
Псевдонимы хранятся в таблице настройки синтаксического анализатора, отображенной _parser_config()
. Обратите внимание на то, что по умолчанию задняя замена псевдонима происходит для правых сторон уравнений в этой таблице, но не для индексов. Используйте print(_parser_config())
отобразить эту таблицу без задней замены псевдонима.
Псевдонимы не используются, в то время как файл читается с помощью read
или fread
с опцией Plain
. С другой стороны, если псевдоним задан в файле, который читается с опцией Plain
, псевдоним только используется, пока файл не был считан полностью.