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”.
Задайте 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
, псевдоним только используется, пока файл не был считан полностью.