假设有一个模块包含sub MAIN应该提高启动速度的's'.不幸的是我无法以named-anywhere这种方式使用该功能.我的出口是破产还是我应该做什么?
use v6.c;
unit module My::Main;
our %*SUB-MAIN-OPTS is export = ( 'named-anywhere' => True);
multi sub MAIN() is export {
say 1;
}
multi sub MAIN('a', :$pa) is export {
say $pa;
}
Run Code Online (Sandbox Code Playgroud)
您目前无法以这种方式导出动态变量,也许我们永远也不会。
同时,由于这通常是在命令行脚本的上下文中进行的,因此有一种解决方法:
# in your module:
PROCESS::<%SUB-MAIN-OPTS><named-anywhere> = True;
# in your script
dd %*SUB-MAIN-OPTS'
# Hash element = ${:named-anywhere}
Run Code Online (Sandbox Code Playgroud)
您正在执行的操作是named-anywhere在%SUB-MAIN-OPTS存在于PROCESS::名称空间中的哈希中设置密钥。如果无法在堆栈的其他任何位置找到动态变量,则在外部命名空间中查找动态变量。请注意,named-anywhere如果密钥的分配尚不存在,则实际上会利用该哈希。因此,这不会干扰将来对%SUB-MAIN-OPTS哈希的任何其他添加。