如何为字符串

时间:2016-09-17 17:10:07

标签: wolfram-mathematica

给定字符串中符号的名称,如何为其分配一个值,不止一次?例如,假设我想要定义一个名称为varname的符号,并且我想为其分配一个值:

varname = "foo"
Symbol[varname]=5

这不起作用,因为Mathematica认为您正在尝试为受保护的Symbol分配值。如果未定义foo,这将有效:

Evaluate[Symbol[varname]]=5

确定。但它不会再次发挥作用了:

Evaluate[Symbol[varname]]=6

当评估左侧时,它评估为5,Mathematica抱怨您正在尝试将值6分配给原始对象5.我想访问左侧的符号foo赋值,而不是foo的值。可以这样做吗?

提前感谢您提供的任何帮助。

1 个答案:

答案 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