gpt4 book ai didi

repository - 试图在运行时管理 Perl6 的 $*REPO

转载 作者:行者123 更新时间:2023-12-05 00:47:44 26 4
gpt4 key购买 nike

复制 FindBin::libs 的行为在 Perl 6 中。

  (1) Start from `$Bin`.
(2) Search for `./lib` dir's above it.
(3) prefix them to the search list.

在 P6 中,这需要管理 $*REPO ,我认为需要使用 CompUnit::RepositoryRegistry ,但我在 modules.perl6.org(可能是因为它是核心)或 docs.perl6.org 上找不到任何文档。

问:是 CompUnit::RepositoryRegistry将一些新目录添加到由 $*REPO 管理的列表中的正确方法?

问:如果有, CU::RR 在哪里?记录在案?

问:如果没有,我应该使用什么?

谢谢

最佳答案

寻找 lib/文件夹仅适用于 CompUnit::Repository::FileSystem repos -- 它不适用于 CompUnit::Repository::Installation repo (已安装的模块)。

话虽如此,以下是可能的:

~/repos/rakudo$ perl6 -e '\
say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem);\
my $lib = CompUnit::Repository::FileSystem.new(prefix => $*CWD.parent.absolute);\
CompUnit::RepositoryRegistry.use-repository($lib);\
say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem)
'
()
(file#/Users/ugexe/repos)

我不确定修改 $*REPO 是否明智虽然在编译时间之外。我预计至少会有一些重大的预补偿处罚。如果它不必是运行时的,那么以下是一个选项:
~/repos/rakudo$ perl6 -e '\
BEGIN say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem);\
BEGIN my $lib = $*CWD.parent.absolute;\
BEGIN use lib $lib;\
say $*REPO.repo-chain.grep(* ~~ CompUnit::Repository::FileSystem)
'
()
(file#/Users/ugexe/repos)

关于repository - 试图在运行时管理 Perl6 的 $*REPO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51089505/

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