给定字符串中符号的名称,一个人怎么能不止一次地给它赋值呢?例如,假设我想定义一个符号,它的名称是varname的值,我想给它分配一个值:
varname = "foo"
Symbol[varname]=5这是不起作用的,因为Mathematica认为你试图给符号赋值,它是受保护的。如果foo未定义,则此操作将有效:
Evaluate[Symbol[varname]]=5好的。但它不会再起作用了:
Evaluate[Symbol[varname]]=6当计算左手边的值时,它的计算值为5,而Mathematica抱怨说,您试图将值6赋值给原始对象5。我希望访问赋值左边的符号foo,而不是foo的值。这能办到吗?
谢谢你能提供的任何帮助。
发布于 2016-09-18 08:11:31
下面是几个方法,用于处理字符串或变量名。
i = Function[{f, g}, Clear[f]; Evaluate@Symbol[f] = g];
i["foo", 5];
foo
i["foo", 6];
foo5 6
h = Function[{f, g}, f = g, {HoldFirst}];
h[foo, 5];
foo
h[foo, 6];
foo5 6
https://stackoverflow.com/questions/39549566
复制相似问题