如何在Raku中包含文件

15

我有两个Raku文件:

hello.p6:

sub hello
{
    say 'hello';
}

和 main.p6:

require 'hello.p6';

hello();

但是它无法正常工作。如何将第一个文件包含在主脚本中?


你能澄清一下为什么它不起作用吗?你得到了什么错误?另外,为什么不考虑使用包和Exporter模块呢? - Blaskovicz
@Blaskovicz - Perl6 不使用 Exporter。 - Coke
2个回答

15

仅供参考,正确的解决方案是使用模块:

文件 Hello.pm6

 module Hello;
 sub hello() is export {
     say 'hello';
 }

文件 hello.p6:

 use v6;
 use lib '.'; # to search for Hello.pm6 in the current dir
 use Hello;
 hello;

5

在Rakudo中,使用显式文件语法和显式导出列表似乎对我有效:

main.p6:

require Hello:file('Hello.p6') <hello>;

hello();

hello.p6:

sub hello {
    say 'hello';
}

来源:http://perlcabal.org/syn/S11.html#Runtime_Importation

这是一篇关于运行时导入的技术文章。在编写程序时,有时需要在运行时动态地加载模块或代码文件。运行时导入就是实现这一功能的方法之一。它可以让你在程序运行时根据需要加载所需的模块或代码文件,而不是在程序开始时就将所有模块和代码都加载进来,从而提高了程序的效率。


1
嗨@mvp,关于“require”的raku文档指出:“如果MyModule没有导出&something,则require将失败。”(https://docs.raku.org/syntax/require)。我建议我们应该与核心团队之一核实这段代码是否应该是“sub hello is export {”,因为要么文档中存在错误...要么即使在当前版本中它“似乎可以工作”,我们也不应该依赖它。 - librasteve

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接