Образцы и их применение
Образцы (patterns) в системе Mathematica служат для задания выражений различных классов и придания переменным особых свойств, необходимых для создания специальных программных конструкций, таких как функции пользователя и процедуры. Это необычайно гибкое и мощное средство обобщенного представления математических выражений, используемое при любом подходе к программированию.
Признаком образца являются знаки подчеркивания «_» (от одного до трех). Они обычно выглядят слитно, так что надо внимательно следить за общей длиной символов образцов. Наиболее распространенное применение образцов — указание на локальный характер переменных при задании функций пользователя. Например, функцияfsc[x_,y_]:= х * Sin[y] + у * Cos[х] + zв списке параметров содержит два образца, х_ и у_. В правой части этого выражения переменные х и у, связанные с образцами х_ и у_, становятся локальными переменными, тогда как переменная z будет глобальной переменной. Обратите особое внимание на то, что символы образцов используются только в списках параметров — в правой части выражений они уже не применяются. Образцами можно задавать некоторые общие свойства функций. Например, запись
f[х_,х_] := р[х]означает, что функция f двух идентичных аргументов становится тождественной функции р [ х ]. Следовательно, вызов функции
f[a,a] + f[а,b]даст выход в виде
f[а,b] + р[а]а при вызове
f[a^2- 1, a^2- 1]будет получен результат
р[-1 + а^2]Примеры применения образцов для задания функции вычисления факториала приводились выше. В образце можно указывать его тип данных:
- x_Integer — образец целочисленный;
- x_Real — образец с действительным значением;
- x_Complex — образец с комплексным значением;
- x_h — образец с заголовком h (от слова head — голова).
Обозначение |
Назначение образца |
- |
Любое выражение |
x_ |
Любое выражение, представленное именем х |
: : pattern |
Образец, представленный именем х |
pattern ? test |
Возвращает True, когда test применен к значению образца |
_h |
Любое выражение с заголовком h |
x_h |
Любое выражение с заголовком h, представленное именем х |
- |
Любая последовательность с одним и более выражений |
- |
Любая последовательность с нулем или более выражений |
:x_< ИЛИ х__ |
Последовательности выражений, представленные именем х |
_h или h__ |
Последовательности выражений, каждое с заголовком h |
x _ h или х__h |
Последовательности выражений с заголовком h, представленные именем х |
x_ :v |
Выражение с определенным значением v |
x_h:v |
Выражение с заголовком h и определенным значением v |
x_. |
Выражение с глобально заданным значением по умолчанию |
Optional [x h] |
Выражение с заголовком h и с глобально заданным значением |
по умолчанию |
|
Pattern. . |
Образец, повторяемый один или более раз |
Pattern. . . |
Образец, повторяемый ноль или более раз |
|