有时我不需要多个文件,特别是当我想保留一个可以在以后变成其他东西的良好结构的想法时。我想做这样的事情:
module Foo {
sub foo ( Int:D $number ) is export {
say "In Foo";
}
}
foo( 137 );
运行这个,我得到一个编译错误(我认为这对于动态语言来说有点奇怪):
===SORRY!=== Error while compiling /Users/brian/Desktop/multi.pl
Undeclared routine:
foo used at line 9
Reading Perl 6“模块”文档 http://doc.perl6.org/language/modules#Exporting_and_Selective_Importing,我没有看到任何方法可以做到这一点,因为各种动词想要查看特定的文件。
子例程声明是词法的,所以&foo
在模块主体之外是不可见的。您需要在主线代码中添加一条 import 语句以使其可见:
module Foo {
sub foo ( Int:D $number ) is export { ... }
}
import Foo;
foo( 137 );
仅作为记录,您还可以手动声明&foo
主线中的变量并从模块内分配给该变量:
my &foo;
module Foo {
sub foo ( Int:D $number ) { ... } # no export necessary
&OUTER::foo = &foo;
}
foo( 137 );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)