首页 > 解决方案 > 是否可以在运行时在其他上下文中创建新的词汇符号?

问题描述

我正在编写一个用于创建具有自定义行为的枚举的模块。我目前所做的是将枚举添加到GLOBAL包中,但这不会安装任何词法符号,除非您在一个模块中创建枚举并从另一个模块中导入它。使用BEGIN $*W.install_lexical_symbol(...)不是一个选项,因为枚举的值可以从网络连接中获取,并且会阻塞编译,直到接收到值。是否可以在运行时在调用者的上下文中安装词法符号?如果是这样,怎么做?

标签: rakulexical-scope

解决方案


我要直截了当地说“不”。

(我通常学会后悔在 P6 上这样做,但嘿嘿。)

我的主要证据是诸如“词汇范围内的符号集在编译后是不可变的”之类的评论。

也许拿一个病包去阅读如何在 Perl 6 中动态定义变量名的建议?这既邪恶又邪恶,不足以做我认为你要求的事情。

呕吐完毕后,请密封袋子,然后访问freenode IRC 频道#perl6-dev,那里有与胆量相关的真正专家。(我想你知道这一点,但我想我会把它包含在这个答案中以供后代使用,因为我似乎有一种病态的幽默感。)


推荐阅读