【发布时间】:2023-03-16 16:45:01
【问题描述】:
由于某种原因,Maple 代码
testproc := proc()
LOCAL abc;
abc[1] := 123;
print(eval(parse(cat("abc[", 1, "]"))))
end proc
testproc();
生产
abc_1
而(相同,但现在 abc 是一个全局变量)
testproc := proc()
GLOBAL abc;
abc[1] := 123;
print(eval(parse(cat("abc[", 1, "]"))))
end proc
生产(我想要的)
123
我需要做什么才能评估包含局部变量的串联字符串?非常感谢您的帮助! :)
【问题讨论】:
-
这是什么语言?
-
没错;连接产生一个全局名称。您很可能在问如何实现一种可疑的方法......这可能会以另一种方式更好地完成。你为什么要这样做?这不仅仅是索引名称,对吧?您是否明确声明了所有这些可能的本地人?多少?为什么它们需要稍后通过串联形成?为什么不发布一个更好的代表你实际想要完成的事情。这种方式似乎误入歧途。
-
谢谢宏碁。我这样做是为了将任务列表创建为要通过线程执行的字符串。我不提前知道我会得到多少分支,所以我只是将它们收集成一个字符串。当然,我愿意接受更好的方法。
-
好吧,为什么不将
abc声明为本地,并以索引方式分配给它,即。abc[i]:=...以通常的方式。如果您需要从 proc 返回该表,那么只需return eval(abc)以便您可以在更高的(例如全局)范围内使用它。无需尝试将abc的副作用作为声明的全局变量。
标签: string global local maple expression-evaluation