例如,如果我定义以下函数
exprod[n_] := Expand[Product[x + i, {i, 1, n}]]
那为什么函数定义中变量n后面必须有下划线呢?这种风格从何而来,还是仅特定于 Mathematica 编程语言?
下划线来自模式匹配。
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