〔Function的类Hold属性〕如何使函数返回纯函数?
mathematica吧
全部回复
仅看楼主
level 9
0577216 楼主
假如我定义这么一个函数:
fpure[x_] := Module[{y}, y = 1; (y + x + #) &]
当输入fpure[3]时会返回
y$15484 + 3 + #1 &
显然这并不是我所期望的(4+#)&,但是请注意,y$15484是有值的,也就是说
fpure[3][2]能给出正确结果6.但是这样的话,每次运行fpure[3]都要产生/计算
一个新的"y$number(*number 每次不同*)",这显然很浪费时间~~~
现在,假如:
1.由于实际函数的复杂性,使用Module并定义中间变量是必须的。
2.实际情况中类似“y”的中间变量的计算是很费时间的,并且“y”变量很多。
那么如何使其正常返回(不依赖于全局变量的)纯函数?
2013年12月05日 04点12分 1
吧务
level 9
把Module改成Block,另外绝大多数情况下两者可以互换,而且Block有时比Module更快,还能少打一个字母
2013年12月05日 05点12分 2
单就楼主的例子来说,还有With可以用。
2013年12月07日 04点12分
1