Ant*_*ado 7 signature perl6 raku
我有一个包含多个main的包,并且想定义几个选项:
我的代码是这样的:
package Perl6::Documentable::CLI {
proto MAIN(|) is export {*}
my %*SUB-MAIN-OPTS = :named-everywhere;
multi MAIN(
"setup"
) { ... }
multi MAIN (
"start" ,
Str :$topdir = "doc",
Bool :v(:verbose($v)) = False
) { ... }
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用以下命令实际执行它时:
perl6 -Ilib bin/documentable start -v --topdir=ss
Run Code Online (Sandbox Code Playgroud)
它输出以下行:
Usage:
bin/documentable [--topdir=<Str>] [-v|--verbose] start
Run Code Online (Sandbox Code Playgroud)
我正在使用%* SUB-MAIN-OPTS,但看来这也不起作用。
Eli*_*sen 10
最简单的解决方案是导出动态变量%*SUB-MAIN-OPTS,但这仍未完全实现:导出可以进行排序,但最终是一个空哈希。所以不是很有用。
Rakudo RUN-MAIN在确定有MAIN要运行的子程序时将调用一个子程序。实际上,您可以RUN-MAIN从模块中导出a ,并设置动态变量,然后调用原始变量RUN-MAIN:
sub RUN-MAIN(|c) is export {
my %*SUB-MAIN-OPTS = :named-anywhere;
CORE::<&RUN-MAIN>(|c)
}
Run Code Online (Sandbox Code Playgroud)
有关的更多信息RUN-MAIN,请参见:https : //docs.raku.org/language/create-cli#index-entry-RUN-MAIN
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |