2016-05-03 8 views
5

Ist es möglich, ein Modul so zu schreiben, dass beim Modul use d ohne expliziten Import alle Subroutinen importiert werden und beim expliziten Import nur explizit importierte Subroutinen zur Verfügung stehen ?Perl6: impliziter und expliziter Import

#!/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 
+0

Verstehen Sie (@sid_com) meine Bearbeitung in der Warteschlange Ihrer Frage (s/export/import /), wie in meiner Antwort (Export ≠ Import) unten beschrieben? Stimmst du dem zu? – raiph

+0

@raiph: Für mich hört sich dein Schnitt gut an (die Größe ist etwas irritierend). Ich habe mich mit dem "Export" zunächst unbehaglich gefühlt und trotzdem benutzt. –

Antwort

8

Ihre subs Geben Sie sowohl das spezielle Label :DEFAULT sowie einen dedizierten beim Export, zB

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

Jetzt können Sie alle von ihnen mit einer einfachen importieren oder kann bestimmte über use Bar :one auswählen;