包 matlab 中的参考函数

Reference function within package matlab

我想在几个包中构建我的项目。每个包都应该有自己的命名空间(以避免文件名冲突),但在一个包内,我希望所有内容都在同一个命名空间中(不必将所有文件放在同一个文件夹中;我想要不同的文件夹)。

实际上我想要这个结构

Project 
    main.m
    commonLibrary
    +part1Project
        mainPart1.m
        otherFolder
            supportFile.m
    +part2Project
        mainPart2.m
        otherFolder2
            supportFile2.m

这是我想要的行为:

目前的设置是我将项目文件夹和所有子文件夹添加到matlab路径。但这意味着

我怎样才能实现我想要的行为?

您不能访问包的子文件夹中的函数,除非该子文件夹是 private folder,在这种情况下,它只能由直接父文件夹中的函数访问。

如果您确实使用 private 文件夹方法,那么您可以从包含文件夹中的函数调用此 private 文件夹中的函数,而无需使用完全限定的包名称。

您的布局如下所示:

Project 
    main.m
    commonLibrary
    +part1Project
        mainPart1.m
        private
            supportFile.m
    +part2Project
        mainPart2.m
        private
            supportFile2.m

您的第一点不会起作用,但其他两点会起作用。没有内置方法可以完成第一点。

另一种选择是在每个包内的所有函数中使用 import 语句,以便它在函数的开头导入所有包成员。

您的布局看起来像

Project 
    main.m
    commonLibrary
    +part1Project
        mainPart1.m
        supportFile.m
    +part2Project
        mainPart2.m
        supportFile2.m

mainPart1.m(任何函数)的内容看起来像:

function mainPart1()
    % Import the entire namespace
    import part1Project.*

    % No package name required
    supportFile()
end

然后从 main 您可以访问 supportFile

function main() 
    part1Project.supportFile()
end