代码之家  ›  专栏  ›  技术社区  ›  Ian Hopkinson

如何在MATLAB中模拟“包含”行为?

  •  7
  • Ian Hopkinson  · 技术社区  · 15 年前

    在MATLAB中,我可以在一个文件中定义多个函数,只有第一个定义的函数在该文件外部可见。或者,我可以将每个函数放在它自己的文件中,并使它们通过路径全局可见。我正在编写一个菜单驱动的应用程序,其中每个菜单项运行不同的功能。目前,这些都在一个大文件中,导航变得越来越困难。我想做的是将相关函数组放入单独的文件中。

    有谁能提出更好的建议吗?

    3 回复  |  直到 15 年前
        1
  •  16
  •   gnovice    10 年前

    一个建议,可以避免修改 MATLAB path ,是使用 private function directory

    假设您有一个名为 test.m 在目录中 \MATLAB\temp\ (已在MATLAB路径上)。如果在中有本地函数 test.m 您希望将其放入自己的m文件中,并且您只需要 test.m 要访问它们,首先要在中创建一个子目录 \MATLAB\temp\ 打电话 private . 然后,将单个本地函数m-files从 test.m 私有的 子目录。

    这个 私有的 不应该 test.m 私有的 子目录可以访问它包含的函数。使用私有函数,可以有效地模拟 local functions (即范围有限、函数重载等),而不必将所有函数放在同一个m文件中(对于某些应用程序,m文件可能会变得非常大)。

        2
  •  5
  •   gnovice    13 年前

    也许是这样的,

    function foobar
        addpath C:\Include\ModuleX
    
        %% Script file residing in ModuleX
        some_func();
    end
    

    当然,ModuleX在退出foobar后将保留在您的搜索路径中。如果要将其设置为默认路径而不重新启动,请添加此行:

    path(pathdef)
    

    看见 ADDPATH

        3
  •  1
  •   Community CDub    8 年前

    在文件夹“+foo”中放置一个函数“bar”

    function bar()
    print('hello world');
    

    此功能可用作:

    foo.bar() % prints hello world
    

    更多信息可在此处找到:

    What is the closest thing MATLAB has to namespaces?