给定字符串中符号的名称,如何为其分配一个值,不止一次?例如,假设我想要定义一个名称为varname
的符号,并且我想为其分配一个值:
varname = "foo"
Symbol[varname]=5
这不起作用,因为Mathematica认为您正在尝试为受保护的Symbol分配值。如果未定义foo
,这将有效:
Evaluate[Symbol[varname]]=5
确定。但它不会再次发挥作用了:
Evaluate[Symbol[varname]]=6
当评估左侧时,它评估为5,Mathematica抱怨您正在尝试将值6分配给原始对象5.我想访问左侧的符号foo
赋值,而不是foo
的值。可以这样做吗?
提前感谢您提供的任何帮助。
答案 0 :(得分:0)
以下是一些处理字符串或变量名称的方法。
i = Function[{f, g}, Clear[f]; Evaluate@Symbol[f] = g];
i["foo", 5];
foo
i["foo", 6];
foo
5 6
h = Function[{f, g}, f = g, {HoldFirst}];
h[foo, 5];
foo
h[foo, 6];
foo
5 6