Perl6: неявный и явный импорт

Можно ли написать модуль таким образом, чтобы, когда модуль 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

person sid_com    schedule 03.05.2016    source источник
comment
Понимаете ли вы (@sid_com) мои изменения в очереди на ваш вопрос (s / export / import /), как описано в моем ответе (Экспорт ≠ Импорт) ниже? Вы согласны с этим?   -  person raiph    schedule 08.05.2016
comment
@raiph: Для меня ваша редакция звучит нормально (размер шрифта немного раздражает). Я сначала чувствовал себя некомфортно с экспортом, но все же использовал его.   -  person sid_com    schedule 08.05.2016


Ответы (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;

person Christoph    schedule 03.05.2016