gpt4 book ai didi

require - `require` 在某些地方不起作用的原因可能是什么?

转载 作者:行者123 更新时间:2023-12-04 10:13:54 29 4
gpt4 key购买 nike

使用 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

最佳答案

use在编译时加载和导入模块,而 require仅在运行时加载模块。

由于命名空间是在编译时检查的,所以不能像使用 use 加载和导入的模块一样访问它。 .

您可以通过符号引用来解决这个问题,但您也可以将命名空间捕获到变量中。
(假设模块中只有一个命名空间,并且与加载时使用的名称相同)

Foo.pm6 :

unit module Foo;

sub fubar () { say 'fubar' }

my \Foo = do require Foo;
Foo::fubar(); # fubar␤

(请注意,变量的名称不必相同。)

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

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