Matlab有类似于主要方法的东西吗?

ger*_*rit 5 oop matlab program-entry-point

如果我有一个包含类定义(classdef)的Matlab源文件(m文件),有没有办法指定在运行m文件时要执行的特定代码集?我指的是整个文件,例如通过RunIDE中的按钮,shell或Matlab命令行.我并不是指手动选择要执行的代码.

Java中使用静态main方法存在类似的行为,而在Python中则存在类定义(可能在if __name__==__main__块内)的代码.

Pet*_*ete 4

最简洁的答案是不”; MATLAB classdef M 文件仅用于定义对象,而不是形成完整的程序。

长的答案是,例如,如果您重载构造函数以采用指定是否“像变量一样行事”或“像程序一样行事”的标志,您也许能够从 classdef 函数中获得特定行为。

例如

classdef myClass
...
methods  
    function self = myClass(varargin)
       if nargin == 1 && strcmpi(varargin{1},'run')
          ..... %run the program
       else
          ..... %make the variable
Run Code Online (Sandbox Code Playgroud)

或者你可以创建一个名为 main 的静态方法:

   methods (Static = true)
       function main()
          %enabes: myClass.main()
          ...
       end
Run Code Online (Sandbox Code Playgroud)

IDE 仍然不知道如何处理您的 M 文件来“运行它”,但您可以从命令行或另一个 M 文件正确运行它。

最后一句话不是 100% 正确 - 正如 Egon 下面指出的,你可以让 MATLAB 的 IDE 运行该代码 - 使用“运行配置”:http ://www.mathworks.com/help/matlab/matlab_prog/run-functions -在编辑器中.html