2012-01-16 25 views
7

Để tránh làm đầy không gian tên, tôi sử dụng các gói. Ví dụ, chúng ta hãy Foo là một chức năng trong một gói gọi FooPackageTôi có thể nhập không gian tên trên toàn cầu mà không cần nhập khẩu rõ ràng trong mỗi và mọi chức năng không?

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

Tôi muốn sử dụng chức năng này trong một chức năng gọi là Bar.

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

chức năng này gọi hàm phụ. Cách Naive là để nói một cách rõ ràng tên gói trong mỗi cuộc gọi

function InFunc1() 
    FooPackage.Foo(); 
end 

function InFunc2() 
    FooPackage.Foo(); 
end 

function InFunc3() 
    FooPackage.Foo(); 
end 

Ngoài ra tôi có thể sử dụng một khẩu trong mỗi chức năng:

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

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

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

Cả hai cách đều được hết. Câu trả lời trong here nói rằng đó là những cách duy nhất. Có ai có đề xuất tốt hơn không?

+1

Có thể bạn có thể giải quyết vấn đề của mình bằng cách sử dụng thư mục 'riêng tư '? – Oli

Trả lời

4

Có thể bạn có thể sử dụng thư mục private. Các hàm trong thư mục private chỉ có thể được nhìn thấy bởi các hàm trong thư mục cha của nó, và chúng có thể được gọi chỉ bằng tên của chúng.

Đó không phải là giải pháp hoàn toàn thỏa mãn, nhưng điều đó có thể hữu ích.

+0

Xét thực tế là câu trả lời của bạn là câu trả lời duy nhất, tôi sẽ chấp nhận nó, như bạn đã nói, nếu không hoàn thành. –

Các vấn đề liên quan