gpt4 book ai didi

module - 检查可选模块可用性的最佳方法

转载 作者:行者123 更新时间:2023-12-03 16:01:03 25 4
gpt4 key购买 nike

在我正在编写的模块中,只有一种方法需要附加模块,因此我希望通过不在 depends 中列出该模块来使其成为可选模块。 META6.json 文件的一部分。如果可选模块不可用,该方法将返回一个失败对象。
我知道我可以做这样的事情:

if (try require Optional::Module) !=== Nil {
# go on
} else {
# fail
}
有没有更好的方法呢?

最佳答案

我要感谢所有回答或评论这个问题的人。
我对我提出的解决方案和对我的问题的评论中给出的两个解决方案进行了基准测试:

my $pre = now;
for ^10000 {
$*REPO.repo-chain.map(*.?candidates('Available::Module').Slip).grep(*.defined);
$*REPO.repo-chain.map(*.?candidates('Unavailable::Module').Slip).grep(*.defined);
}
say now - $pre; # 13.223087

$pre = now;
for ^10000 {
$*REPO.resolve(CompUnit::DependencySpecification.new(:short-name("Available::Module")));
$*REPO.resolve(CompUnit::DependencySpecification.new(:short-name("Unavailable::Module")));
}
say now - $pre; # 3.105257

$pre = now;
for ^10000 {
(try require Available::Module) !=== Nil;
(try require Unavailable::Module) !=== Nil;
}
say now - $pre; # 4.963793
更改模块名称以匹配您系统上可用的模块名称和不匹配的模块名称。
评论在我的电脑上以秒为单位显示结果。

关于module - 检查可选模块可用性的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66155502/

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