我可以全局导入命名空间而不在每个函数中显式调用import吗?

时间:2012-01-16 17:02:24

标签: matlab namespaces

为了避免命名空间膨胀,我使用包。例如,让Foo成为名为FooPackage

的包中的函数
function Foo()
   disp('Foo');
end

我想在另一个名为Bar的函数中使用此函数。

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

这个函数调用子函数。朴素的方式是在每次调用中明确说明包名称

 function InFunc1()
    FooPackage.Foo();
end

function InFunc2()
   FooPackage.Foo();
end

function InFunc3()
   FooPackage.Foo();
end

或者我可以在每个函数中使用导入:

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

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

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

这两种方式都令人筋疲力尽。 here中的答案说这是唯一的方法。 有人有更好的建议吗?

1 个答案:

答案 0 :(得分:4)

也许您可以使用private目录。 private目录中的函数只能通过其父目录中的函数来查看,并且只能通过它们的名称来调用它们。

这不是一个完全令人满意的解决方案,但这可以提供帮助。