我想在几个包中构建我的项目。每个包应该是每个自己的命名空间(以避免文件名冲突)但在包中,我希望所有内容都在同一个命名空间中(不必将所有文件放在同一个文件夹中;我想要不同的文件夹)。
在实践中我想要这个结构
Project
main.m
commonLibrary
+part1Project
mainPart1.m
otherFolder
supportFile.m
+part2Project
mainPart2.m
otherFolder2
supportFile2.m
这是我想要的行为:
当前设置是我将Project文件夹和所有子文件夹添加到matlab路径。但这意味着
我如何实现我想要的行为?
答案 0 :(得分:1)
您无法访问包的子文件夹中的函数,除非该子文件夹是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