gpt4 book ai didi

matlab - 包中的引用函数 matlab

转载 作者:行者123 更新时间:2023-12-04 17:02:18 24 4
gpt4 key购买 nike

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

在实践中,我想要这种结构

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

这是我想要的行为:
  • 在 main.m 中,我可以调用公共(public)库中的所有内容以及任何子项目中的所有内容,包括子文件夹中的函数。所以我想调用part1Project.supportFile
  • 在 mainPart1.m 中,我想调用支持文件而不使用当前包的前缀(即我想直接调用 supportFile)
  • 在 mainPart2 中时,我想直接调用 supportFile2。如果我想访问项目第 1 部分中的文件,我可以调用 part1Project.supportFile。

  • 当前的设置是我将 Project 文件夹和所有子文件夹添加到 matlab 路径中。但这意味着
  • 我不能从任何地方调用 supportFile;不是来自 main(part1Project.supportFile 将不起作用),甚至不是来自 mainPart1(无法找到 supportFile)
  • 以同样的方式,很难从 part2Project
  • 访问 part1Project 的元素。

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

    最佳答案

    您不能访问包子文件夹中的函数,除非该子文件夹是 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

    关于matlab - 包中的引用函数 matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43210481/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com