You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 16:32:39