Function Wolfram Mathematica中的作业
关于赋值和变量的问题Function Wolfram Mathematica中的作业,function,wolfram-mathematica,variable-assignment,symbolic-math,sparse-array,Function,Wolfram Mathematica,Variable Assignment,Symbolic Math,Sparse Array,关于赋值和变量的问题 (* For example *) SP = SparseArray[{},5] or SP = Range[5] 现在我们想在另一个函数中使用此数组: (* example *) Fun[array_]:= array[[3]] = 100 ; (* set cell №3 equal to 100*) 然后我们评估 Fun[SP] 错误输出将是一个错误,如:Set::write Tag SparseArray in。。。受保护。 那么,在函数(非纯函数)中更改函数
(* For example *) SP = SparseArray[{},5] or SP = Range[5]
现在我们想在另一个函数中使用此数组:
(* example *) Fun[array_]:= array[[3]] = 100 ; (* set cell №3 equal to 100*)
然后我们评估
Fun[SP]
错误输出将是一个错误,如:Set::write Tag SparseArray in。。。受保护。
那么,在函数(非纯函数)中更改函数参数的正确方法是什么?如何创建类似于部分[]
的模拟
也许smth喜欢:
Clear[f]; f[a_]:=Set[Symbol[a][[3]],100]; A =SparseArray[{},5]; f["A"];
但这又是一个错误您可以这样做:
SP = Range[5];
Fun[array_] := array[[3]] = 100;(*set cell №3 equal to 100*)
Fun[Unevaluated@SP];
SP
{1,2100,4,5}我认为克里斯·德格宁的方法通常应该避免使用。
Mathematica提供了一种更好的方法: 作为“纯函数”:
欢迎来到StackExchange!有一个新的StackExchange站点专门用于Mathematica,您可能会感兴趣。我肯定这是一个重复的问题,但我觉得很懒。
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}