| Украина |
Детализация
Просмотр определений. Разница между Unset и Clear
Команда Definition[x] или ?x выводит определения для x (команда ?x дает больше информации), заданные с помощью команд = и :=:
In[89]:=х=а-2;
x
Out|90]=-2+а
In[91]:=Definition [x]
Out[91] =
х=-2+а
In[92]:=?xх=-2+а
In[93]:=Clear[x]
Definition[x]
Out[94]=NullПродемонстрируем разницу между Unset ( =. ) и Clear (команда Unset работает только для выражения, точно соответствующего тому, которому присваивали; Clear работает для всех ассоциированных выражений):
In[95]:=f[x_]:=x2 ;
f[x_,y_]=x+y;
Definition[f ]
Out[97]=
f[x_]:=x2
f[x_,y_]=x+у
In[98]:=f=.
Definition[f ]
Out[99]=
f[x_]:=x2
f[x_,y_]=x+у
In[100]:=f[y_]=.
Definition[f]
Out[101]=
f[x_,y_]=x+y
In[102]:=f [x_]:=x2 ;
Definition[f ]
Out[103]=
f[x_,y_]=x+у
f[x_]:=x2
In[104]:=Clear[f ]
Definition[f]
Out[105]=NullШаблоны (Pattern)
Шаблоны используются как для описания возможного вида аргументов функций, так и для выбора объекта из списка.
Шаблоны для описания аргументов функций
Шаблон "_" (Blank[]) указывает на любой объект. Шаблон "x_" - на любой объект, которому, для обращения к нему, присвоено имя x:
In[106]:=f [x_]:=х2
Шаблон "_h " - любой объект, имеющий заголовок h:
In[107]:=fint[x_Integer]:=х2
{fint[2],fint[l/2],fint[x]}
Out[108]={4,fint[1/2],fint[x]}Шаблон "s:obj" - объекты вида obj, которым приписано имя s:
In[109]:=fobj[x:{-,-}]:=x[[l]]+x[[2]]
{fobj[{l,2}],fobj[{l,2,3}],fobj[x]}
Out[110]={3,fobj[{l,2,3}],fobj[x]}Шаблон "_ _" ( BlankSequence[] ) - любая последовательность, состоящая из одного или более выражений:
In[111]:=fseq[x_]:={x}2
fseq[3]
fseq[3, 5]
Out[112]={9}
Out[113]= fseq[3, 5]
In[114]:=Clear [fseq]
fseq[x__]:={x}2
fseq[3]
fseq[3,5]
Out[116]={9}
Out[117]={9,25}Шаблон "_ _ _" ( BlankNullSequence[] ) - любая последовательность, состоящая из нуля или более выражений (в приведенном ниже примере <> обозначает объединение (конкатенацию) строк, а ToString[expr] превращает выражение expr в соответствующую строку):
In[118]:=fnulseq[x___]:="число аргументов равно "<>
ToString[Length[{х}]]
fnulseq[]
fnulseq[3]
fnulseq[3,5]
Out[119] = число аргументов равно 0
Out[200] = число аргументов равно 1
Out[l2l] = число аргументов равно 2Шаблон Repeated[p] или "p.." обозначает так называемую последовательность ( Sequence ) из одного или более аргументов, каждый из которых соответствует шаблону (Pattern) p. Шаблон RepeatedNull[p] или "p..." обозначает последовательность ( Sequence ) из нуля или более аргументов, каждый из которых соответствует шаблону (Pattern) p.
In[122]:=fpat[x:{_,_}..]:=Plus@@{х}
In[123]:=fpat[{xl,х2},{yl,у2},{zl,z2}]
Out[123]={xl+yl+zl,x2+y2+z2}
In[124]:=fpat[{xl,x2},y,{zl,z2}]
Out[124]=fpat[{xl,x2},y,{zl,z2}]
In[125]:=fpat[{xl,x2},{yl,y2},{{zll,zl2},z2}]
Out[125]={{xl+yl+zll,xl+yl+zl2},x2+y2+z2}
