从一个解释器获取 tcl 命名空间的内容并传递给另一个解释器
我使用 cpptcl.hpp 库来创建 TCL 解释器并评估一些表达式。现在我陷入了一个问题:在一个解释器(Tcl::interpreter interp1;)中,我在一个解释器中有一个名为 MyNamespace 的命名空间,其中定义了一些变量和过程,并且我希望能够在另一个解释器中计算一些 TCL 表达式解释器(Tcl::interpreter interp2;)通过使用 MyNamespace 命名空间中的预定义变量和过程。我怎样才能做到这一点?
I use cpptcl.hpp library to create TCL interpreters and evaluate some the expressions. Now I stuck in one problem: In one interpreter (Tcl::interpreter interp1;) I have a namespace called MyNamespace in one interpreter, where there are some variables and procedures defined, and I want to be able to evaluate some TCL expressions in another interpreter (Tcl::interpreter interp2;) by using the predefined variables and procedures in MyNamespace namespace. How I can do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你不能。至少,不容易。
当然,如果您的 interp 只包含纯 Tcl 代码,并且没有加载任何包,那么原则上您可以将所有内容序列化(到字符串)并在另一个 interp 中对其进行评估;维基有这方面的例子(搜索“保存状态”等)。
但对我来说,您似乎正在尝试创建一个“参考”插值,然后将其用作一种模板。如果是这样,我会只编写一段代码来设置一个插值,然后每次调用它以获得一个适当准备的插值。
You can't. At least, not easily.
Of course, if your interp does only contain pure Tcl code, and no packages loaded, you are able, in principle, to serialize everything (to a string) and evaluate it in an another interp; the wiki has examples on this (search for "saving state" etc).
But to me it looks like you're trying to create a "reference" interp and then use it as a kind of template. If so, I would instead just write a code which sets up an interp and then would call it each time to get an appropriately prepared interp.