变量个数不确定的函数
当 f 不可结合时,模式
仅代表恰有两个变量的函数. 有时还需要建立具有任意数目的自变量的函数.
这可以通过多重空位来实现. 一个空位
表示一个 Mathematica 表达式,两个空位
表示多个表达式.
这里

表示一系列表达式

.
| Out[1]= |  |
从

中挑选重复元素的更复杂的定义.
| Out[3]= |  |
双空位
表示一个或多个表达式的序列. 三空位
表示零个或多个表达式序列. 在使用三空位时,很容易导致死循环这类错误. 例如,定义
,接下来输入
将进入死循环状态,此时,
将反复地与零元素序列进行匹配. 所以,要尽量地少用三空位.
| _ | 单一表达式 |
| x_ | 名为 x 的表达式 |
| __ | 一个或多个表达式序列 |
| x__ | 名为 x 的表达式列 |
| x__h | 头部为 h 的表达式列 |
| ___ | 零个或多个表达式序列 |
| x___ | 名为 x 的零个或多个表达式序列 |
| x___h | 头部为 h 的零个或多个表达式序列 |
不同类型的模式.
像 Plus 和 Times 这样具有结合性的函数,Mathematica 自动处理变量的数目,不需要使用双空位和三空位,如 "有交换性和结合性的函数" 中讨论的.
在使用多重空位时,对特定的表达式有不同的匹配方式. 默认情况下,Mathematica 总是先将模式中的第一个多空位与变量的最短序列匹配. 可以通过在模式的项周围使用 Longest 或者 Shortest 括起来来改变顺序.
控制匹配的顺序.
这里给出了
Mathematica 所有可能的匹配.
| Out[4]= |  |
这里命令
Mathematica 对
x__ 先尝试最长的匹配.
| Out[5]= |  |
| Out[6]= |  |
| Out[7]= |  |
| Out[8]= |  |