是否有可能在运行时在其他上下文中创建新的词汇符号?

Kai*_*epi 5 perl6 lexical-scope raku

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

rai*_*iph 6

我要说的完全是“不”。

(我通常会后悔使用P6这么做,但是嘿。)

我的主要证据是这样的评论,例如“词汇范围内的符号集在编译后是不可变的”

也许拿一个生病的书包,然后阅读“ 如何在Perl 6中动态定义变量名”中的建议那既邪恶又仍然不够邪恶,无法满足我的要求。

完成呕吐之后,请密封好背包,然后访问freenode IRC频道#perl6-dev,在那里可以找到与内脏有关的真正专家。(我想您知道这一点,但我想将它包括在此答案中以供后代使用,因为我似乎有一种不适的幽默感。)

  • 我意识到,即使我可以在运行时安装词法符号,也无济于事,因为如果在当时枚举值未知的情况下对其进行任何引用,它们在编译时仍然是未定义的,并且会引发错误。 (2认同)