Mathematica 9 is now available

A.5.1 模式

模式代表表达式的类. 它们包括了表示由可能的表达式所构成集合的模式对象.

模式对象


当几个具有同样名称的模式对象出现在一个单独的模式中时,所有这些对象代表同一表达式.因此f[x_, x_]可以表示f[2, 2]但不能表示f[2, 3].
在一个模式对象,例如 _h,中,头h可以是任意表达式,但它本身不能是一个模式.
一个模式对象,例如 x__,代表了一组表达式.因此,举例来讲,f[x__]可以表示f[a, b, c],这里x是数组[a, b, c].如果你在一个变换法则的结果中使用x,该数组将被插入到x出现的这个函数中.这样,g[u, x, u]将成为g[u, a, b, c, u].
当模式对象x_:vx_.作为函数的参数出现,它们表示可能被忽略的参数.当与x_:v对应的参数被忽略, x取值为v.当
x_.对应的参数被忽略,x取为与它所出现的函数相联系的缺省值.也可以通过对Default[f]等赋值指定这个缺省值.

缺省值

一个形如f[x__, y__, z__]的模式可以通过对xyz的不同选择来匹配一个形如f[a, b, c, d, e]的表达式. xy具有最小长度的选择首先被尝试.一般的,当一个单独的函数中有多个 __ or ___时,首先被尝试的情况是用所有的_____代替除最后一个以外的具有最小长度的数组,而最后一个数组代表了"剩余"的参数.如有 x_:vx_.存在,首先被尝试的情况是这样的情况,在这种情况下没有任何一个与缺省参数对应.后续参数被扔掉的情况将在下一次尝试.

模式匹配时要用到的属性

模式对象,如x_,可以表示一个具有Flat属性的函数f 中的任意一组参数.这种情况下,x的值是使用了这组参数的的f值.
如果f 具有OneIdentity属性,则当 x与仅有一个参数的数组对应时,宁愿用e来代替f[e].



Any questions about topics on this page? Click here to get an individual response.Buy NowMore Information
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.