例如,如果我正在定义以下函数
exprod[n_] := Expand[Product[x + i, {i, 1, n}]]
那么为什么变量n后面的下划线在函数定义中是必须的呢?这种风格从何而来,还是只针对 Mathematica 编程语言?
例如,如果我正在定义以下函数
exprod[n_] := Expand[Product[x + i, {i, 1, n}]]
那么为什么变量n后面的下划线在函数定义中是必须的呢?这种风格从何而来,还是只针对 Mathematica 编程语言?
下划线来自模式匹配。
x_ 匹配任何内容,并且 thisanything 绑定到函数主体中的名称 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]。
现在假设我们要将 e 上 l 的值定义为 1。我们写 l[e] := 1 还是 l[e_] := 1 ?
一个说 l 到(字面上)变量 e 必须是 1。另一个说 l 到某物给出 1。
http://reference.wolfram.com/mathematica/tutorial/Introduction-Patterns.html