Raku中如何从Air::Base重导出Air::Base::Tools中的枚举?
Raku模块重导出枚举时未声明名称的解决方法
问题背景
我维护着由Air::Base、Air::Base::Tools组成的模块树,希望将Air::Base::Tools中的枚举通过Air::Base重导出给调用代码,但重构后调用脚本报错。
原代码实现
Air::Base::Tools 原代码
sub exports-air-base-tools is export {<Tool Provider>} enum Provider is export <Umami>;
Air::Base 原代码
use Air::Base::Tools; … sub EXPORT { Map.new: @exports-air-base-tools.map: {$_ => ::($_)} }
调用脚本
use Air::Base; my @tools = [Analytics.new: :provider(Umami), :key<...>,];
报错信息
Undeclared name:
Umami used at line 34
注:枚举直接声明在Air::Base中时可正常运行,问题出现于重构之后。
解决方法
需在Air::Base::Tools的导出列表中显式添加枚举值Umami,修改后的代码如下:
修改后的 Air::Base::Tools 代码
sub exports-air-base-tools is export {<Tool Provider Umami>} enum Provider is export <Umami>;
Air::Base代码无需改动,此时调用脚本即可正常运行。
内容的提问来源于stack exchange,提问作者librasteve
相关产品推荐
相关产品推荐

