gpt4 book ai didi

signature - 多个 MAIN 签名

转载 作者:行者123 更新时间:2023-12-04 10:59:51 25 4
gpt4 key购买 nike

我有一个包含多个 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
) { ... }

但是当我尝试实际执行它时:
perl6 -Ilib bin/documentable start -v --topdir=ss

它输出这一行:
Usage:
bin/documentable [--topdir=<Str>] [-v|--verbose] start

我正在使用 %*SUB-MAIN-OPTS 但它看起来也不起作用。

最佳答案

最简单的解决方案是导出动态变量 %*SUB-MAIN-OPTS ,但这仍然没有完全实现:导出工作排序,但最终是一个空哈希。所以不是很有用。

Rakudo 将调用一个名为 RUN-MAIN 的子程序。当它决定有一个 MAIN子要运行。您实际上可以导出 RUN-MAIN从你的模块,并设置动态变量,然后调用原来的RUN-MAIN :

sub RUN-MAIN(|c) is export {
my %*SUB-MAIN-OPTS = :named-anywhere;
CORE::<&RUN-MAIN>(|c)
}

更多关于 RUN-MAIN 的信息,见: https://docs.raku.org/language/create-cli#index-entry-RUN-MAIN

关于signature - 多个 MAIN 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57018252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com