我想通过将列表传递给某个函数来评估下面的 f:
f = {z[1] z[2], z[2]^2};
a = % /. {z[1]-> #1,z[2]-> #2};
F[Z_] := Evaluate[a] & @@ Z ;
所以现在如果我尝试F[{1,2}]
我会得到{2, 4}
预期的结果。但仔细观察?F
会返回定义
F[Z_] := (Evaluate[a] &) @@ Z
这取决于 的值a
,所以如果我们设置a=3
然后评估F[{1,2}]
,我们得到3
。我知道添加最后一个&
可以Evaluate[a]
保持,但是什么是优雅的解决方法?本质上我需要强制评估Evaluate[a]
,主要是为了提高效率,因为a
实际上是相当复杂的。
有人可以帮忙,并考虑到f
必须包含Array[z,2]
一些未知计算的给定值。所以写
F[Z_] := {Z[[1]]Z[[2]],Z[[2]]^2}
还不够,我需要从我们的f
.
非常感谢您的任何贡献。