Maple中的全局与局部变量估值问题

时间:2013-04-03 23:14:28

标签: string global local maple expression-evaluation

出于某种原因,Maple代码

testproc := proc()
  LOCAL abc;
  abc[1] := 123;
  print(eval(parse(cat("abc[", 1, "]"))))
end proc

testproc();

产生

abc_1

而(同样,但abc现在是GLOBAL变量)

testproc := proc()
  GLOBAL abc;
  abc[1] := 123;
  print(eval(parse(cat("abc[", 1, "]"))))
end proc

产生(我想要的)

123

我需要做什么才能评估涉及局部变量的连接字符串?非常感谢您的帮助! :)

1 个答案:

答案 0 :(得分:0)

使用解析时,它的运行方式就像文本在自己的文件中或在顶层输入一样。它没有词法范围变量的上下文。

您可以执行类似

的操作
eval(parse(cat("abc[",1,"]")),convert('abc',`global`)='abc');

如果要处理多个局部变量,请将第二个参数的集合用于eval。

我认为你有理由通过字符串形式。对于直接对象操作,通常不是一个好主意。