为什么 Mathematica 在定义参数时使用下划线?

问题描述 投票:0回答:1

例如,如果我定义以下函数

exprod[n_] := Expand[Product[x + i, {i, 1, n}]]

那为什么函数定义中变量n后面必须有下划线呢?这种风格从何而来,还是仅特定于 Mathematica 编程语言?

wolfram-mathematica mathematica-8
1个回答
27
投票

下划线来自模式匹配。

x_ 匹配任何内容,并且该任何内容绑定到函数体中的名称 x。

l[x_ * y_] := l[x] + l[y];

然后在

l[2*z]
中,首先将表达式
2*z
与 图案
x_ * y_ 
。然后
x
绑定到 2,
y
绑定到
z
。 然后对表达式
l[x] + l[y]
求值,结果变为
l[2]+l[z]

现在假设我们要将

l
上的
e
的值定义为 1。 我们写
l[e] := 1
还是
l[e_] := 1

有人说

l
(字面上)变量
e
必须为 1。 另一个说
l
某物给出 1.

http://reference.wolfram.com/mathematica/tutorial/Introduction-Patterns.html

© www.soinside.com 2019 - 2024. All rights reserved.