使用 ABC 加载模块 ( require ) 在发行版的一个模块中有效,而在发行版的另一个模块中失败。
使用 ABC 加载 require 在一处失败的原因可能是什么?

require Name::ABC;
my $new = Name::ABC.new(); # dies: You cannot create an instance of this type (ABC)
perl6 -v
This is Rakudo Star version 2019.03.1 built on MoarVM version 2019.03
implementing Perl 6.d.

所需模块:App::DBBrowser::Subqueries

App::DBBrowser::Union ,第 80 行:好的 *

App::DBBrowser::Join ,第 66 和 191 行:好的 *

App::DBBrowser::Table::Extensions ,第 49 行:好的 *

App::DBBrowser ,第 690 行:您不能创建此类型的实例(子查询)*

App::DBBrowser::CreateTable ,第 112 行:您不能创建此类型的实例(子查询)*

* 版本 0.0.1

最佳答案

$ cat XXX.pm6
unit class XXX;

$ cat ZZZ.pm6
module ZZZ {
    require XXX;
    XXX.new;
    say "OK";
}

$ perl6 -I. -e 'use ZZZ;'
===SORRY!===
You cannot create an instance of this type (XXX)

documentation :



您正在执行模块的运行时加载,同时还期望该模块的符号在编译时存在。相反,您应该使用间接名称查找(如前面链接的文档页面底部所示):
$ cat XXX.pm6
unit class XXX;

$ cat ZZZ.pm6
module ZZZ {
    require XXX;
    ::("XXX").new;
    say "OK";
}

$ perl6 -I. -e 'use ZZZ;'
OK

关于require - `require` 在某些地方不起作用的原因可能是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56089611/

10-11 02:46