raku - 是否可以在运行时在其他上下文中创建新的词汇符号?
问题描述
我正在编写一个用于创建具有自定义行为的枚举的模块。我目前所做的是将枚举添加到GLOBAL
包中,但这不会安装任何词法符号,除非您在一个模块中创建枚举并从另一个模块中导入它。使用BEGIN $*W.install_lexical_symbol(...)
不是一个选项,因为枚举的值可以从网络连接中获取,并且会阻塞编译,直到接收到值。是否可以在运行时在调用者的上下文中安装词法符号?如果是这样,怎么做?
解决方案
我要直截了当地说“不”。
(我通常学会后悔在 P6 上这样做,但嘿嘿。)
我的主要证据是诸如“词汇范围内的符号集在编译后是不可变的”之类的评论。
也许拿一个病包去阅读如何在 Perl 6 中动态定义变量名的建议?这既邪恶又邪恶,不足以做我认为你要求的事情。
呕吐完毕后,请密封袋子,然后访问freenode IRC 频道#perl6-dev,那里有与胆量相关的真正专家。(我想你知道这一点,但我想我会把它包含在这个答案中以供后代使用,因为我似乎有一种病态的幽默感。)
推荐阅读
- azure - 应用洞察记录——只记录我所说的,不记录其他
- reactjs - 与上下文反应,减少调度样板
- javascript - JavaScript 不适用于 HTML 文件 (Express)
- javascript - react native:将类组件更改为功能组件和挂钩的方法是什么?
- mongodb - mongodb - 将嵌套对象数组合并为一个保留所有数据的数组
- ruby - 我正在尝试通过 rbenv build on mac os catalina 安装 ruby-2.2.3 但收到以下错误
- firebase - Firebase 抛出“服务器以状态 400 响应”
- angular - Angular 指令更改元素的输入
- javascript - Mongo 认为 10 月 1 日和 2 日是不同的月份
- azure-sql-database - CTE 不适用于 azure sql,但适用于普通 sql server