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

And*_*ein 7 matlab namespaces

为了避免命名空间膨胀,我使用包.例如,让我们Foo成为一个名为的函数FooPackage

function Foo()
   disp('Foo');
end
Run Code Online (Sandbox Code Playgroud)

我想在另一个函数中使用这个函数Bar.

function Bar()
    InFunc1();
    InFunc2();
    InFunc3();
end
Run Code Online (Sandbox Code Playgroud)

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

 function InFunc1()
    FooPackage.Foo();
end

function InFunc2()
   FooPackage.Foo();
end

function InFunc3()
   FooPackage.Foo();
end
Run Code Online (Sandbox Code Playgroud)

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

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

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

function InFunc3()
    import FooPackage.*
    Foo();
end
Run Code Online (Sandbox Code Playgroud)

这两种方式都令人筋疲力尽.这里的答案说这是唯一的方法.有没有人有更好的建议?

Oli*_*Oli 4

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

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