此为 Mathematica 4 文档,内容基于更早版本的 Wolfram 语言
查看最新文档(版本11.2)

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].