出于某种原因,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
我需要做什么才能评估涉及局部变量的连接字符串?非常感谢您的帮助! :)
答案 0 :(得分:0)
使用解析时,它的运行方式就像文本在自己的文件中或在顶层输入一样。它没有词法范围变量的上下文。
您可以执行类似
的操作eval(parse(cat("abc[",1,"]")),convert('abc',`global`)='abc');
如果要处理多个局部变量,请将第二个参数的集合用于eval。
我认为你有理由通过字符串形式。对于直接对象操作,通常不是一个好主意。