2016-05-03 10 views
5

È possibile scrivere un modulo in modo che quando il modulo sia use d senza importare esplicitamente tutte le subroutine vengano importate e quando è use d con l'importazione esplicita solo queste sottoprogrammi importati espliciti sono disponibili ?Perl6: importazione implicita ed esplicita

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

Hai (@sid_com) capito la mia modifica in coda alla tua domanda (s/export/import /) come spiegato nella mia risposta (Esporta ≠ Importa) sotto? Sei d'accordo? – raiph

+0

@raiph: Per me la tua modifica suona bene (le dimensioni appassionate sono un po 'irritanti). Mi sentivo a disagio in primo luogo con l '"esportazione", ma lo usavo ancora. –

risposta

8

Lascia la tua subs sia l'etichetta speciale :DEFAULT così come uno dedicato durante l'esportazione, ad esempio

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

Ora, è possibile importare tutti con una pianura , o può selezionare quelli specifici tramite use Bar :one;

Problemi correlati