2012-01-16 11 views
7

Ad alanı şişmesini önlemek için paketleri kullanıyorum. Örneğin, Foo olalım bir paket içinde bir işlev ben Bar adlı başka işlevi bu işlevi kullanmak istiyorumHer bir işlevde içe aktarmayı açıkça aramadan genel olarak bir ad alanı alabilir miyim?

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

FooPackage aradı. Bu işlev alt işlevleri çağırır. Bu işlev alt işlevleri çağırır. Naif yolu

function InFunc1() 
    FooPackage.Foo(); 
end 

function InFunc2() 
    FooPackage.Foo(); 
end 

function InFunc3() 
    FooPackage.Foo(); 
end 

Alternatif ben her işlevinde bir ithalat kullanabilirsiniz her çağrı açıkça paket adını söylemektir:

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

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

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

yollardan ikisi de tüketiyor. here'daki yanıt, bunun tek yol olduğunu söylüyor. Herkes daha iyi bir öneriye sahip mi?

+1

Belki de sorununuzu "özel" bir dizini kullanarak çözebilirsiniz? – Oli

cevap

4

Belki de private dizinini kullanabilirsiniz. private dizindeki işlevler, yalnızca üst dizindeki işlevler tarafından görülebilir ve yalnızca isimleriyle çağrılabilirler.

Tamamen tatmin edici bir çözüm değil, ama bu yardımcı olabilir.

+0

Sizin cevabınızın tek olduğu gerçeği göz önüne alındığında, kendiniz söylediğiniz gibi, eğer tamamlanmamışsa, kabul edeceğim. –

İlgili konular