2012-01-16 7 views
7

Per evitare il gonfiore dello spazio dei nomi, utilizzo i pacchetti. Ad esempio, supponiamo Foo essere una funzione in un pacchetto chiamato FooPackagePosso importare uno spazio dei nomi globalmente senza chiamare esplicitamente l'importazione in ogni singola funzione?

function Foo() 
    disp('Foo'); 
end 

voglio usare questa funzione in un altro funzione chiamata Bar.

function Bar() 
    InFunc1(); 
    InFunc2(); 
    InFunc3(); 
end 

questa funzione chiama sotto-funzioni. Il modo ingenuo è dire esplicitamente il nome del pacchetto in ogni chiamata

function InFunc1() 
    FooPackage.Foo(); 
end 

function InFunc2() 
    FooPackage.Foo(); 
end 

function InFunc3() 
    FooPackage.Foo(); 
end 

In alternativa posso utilizzare un'importazione in ogni funzione:

function InFunc1() 
    import FooPackage.* 
    Foo(); 
end 

function InFunc2() 
    import FooPackage.* 
    Foo(); 
end 

function InFunc3() 
    import FooPackage.* 
    Foo(); 
end 

Entrambi i modi sono estenuanti. La risposta in here dice che questi sono gli unici modi. Qualcuno ha un suggerimento migliore?

+1

Forse puoi risolvere il tuo problema usando una directory 'private'? – Oli

risposta

4

Forse potresti usare una directory private. Le funzioni nella directory private possono essere viste solo dalle funzioni nella sua directory padre e possono essere chiamate solo con il loro nome.

Non è una soluzione completamente soddisfacente, ma può essere d'aiuto.

+0

Considerando il fatto che la tua risposta è l'unica, la accetterò, anche se, come hai detto tu stesso, se non è completa. –

Problemi correlati