【问题标题】:Perl6: implicit and explicit importPerl6:隐式和显式导入
【发布时间】:2016-05-03 08:29:52
【问题描述】:

是否可以编写一个模块,当模块为used 且没有显式导入时,所有子例程都被导入,而当它是used 时,只有这些显式导入的子例程可用?

#!/usr/bin/env perl6
use v6;
use Bar::Foo;

# all subroutines are imported
sub-one();
sub-two();
sub-three();

#!/usr/bin/env perl6
use v6;
use Bar::Foo :sub-one, :sub-two;

sub-one();
sub-two();
# sub-three not imported

【问题讨论】:

  • 您 (@sid_com) 是否理解我对您的问题 (s/export/import/) 的排队编辑,如下面我的回答 (Export ≠ Import) 中所述?你同意吗?
  • @raiph:对我来说,你的编辑听起来不错(喜欢的尺寸有点烦人)。一开始我对“导出”感到不舒服,但仍然使用它。

标签: import raku


【解决方案1】:

在导出时为您的订阅者提供特殊标签:DEFAULT 以及专用标签,例如

unit module Bar;
sub one is export(:DEFAULT, :one) { say "one" }
sub two is export(:DEFAULT, :two) { say "two" }

现在,您可以使用普通的use Bar 导入所有这些,也可以通过use Bar :one 选择特定的;

【讨论】:

    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 2022-07-20
    • 2019-08-12
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    相关资源
    最近更新 更多