0

出于某种原因,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

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

4

1 回答 1

0

当您使用 parse 时,它​​的操作就像文本在其自己的文件中或在顶层输入一样。它没有词法范围变量的上下文。

你可以做类似的事情

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

如果要处理多个本地变量,请使用 set 作为 eval 的第二个参数。

我假设你有一些理由要通过字符串形式。对于直接的对象操作,这通常不是一个好主意。

于 2013-04-04T05:00:08.930 回答