关于赋值和变量的问题
(* For example *) SP = SparseArray[{},5] or SP = Range[5]现在,我们希望在另一个函数中处理这个数组:
(* example *) Fun[array_]:= array[[3]] = 100 ; (* set cell №3 equal to 100*)然后我们
Fun[SP]错误!输出将是一个错误,类似于:
那么,怎样才能正确地改变函数(非纯函数)中的函数参数呢?如何创建类似于Part[]的类
可能有点像:
Clear[f]; f[a_]:=Set[Symbol[a][[3]],100]; A =SparseArray[{},5]; f["A"]; 但这又是错误
发布于 2012-03-30 11:00:52
我认为一般应该避免克里斯·德格宁的方法。
Mathematica提供了一个更好的方法:Hold属性。
a = Range[5];
SetAttributes[fun, HoldFirst]
fun[array_] := array[[3]] = 100
fun[a];
a{1,2,100,4,5}
作为一种“纯功能”:
b = Range[5];
fun2 = Function[array, array[[3]] = 100, HoldFirst];
fun2[b];
b{1,2,100,4,5}
发布于 2012-03-20 23:56:42
你可以这样做:
SP = Range[5];
Fun[array_] := array[[3]] = 100;(*set cell №3 equal to 100*)
Fun[Unevaluated@SP];
SP{1,2,100,4,5}
https://stackoverflow.com/questions/9795824
复制相似问题