如果我有一个包含类定义 (classdef
) 的单个 Matlab 源文件(m 文件),是否有任何方法可以指定在我运行时要执行的一组特定代码m文件?我的意思是整个文件,例如通过 IDE 中的 Run
按钮、从 shell 或从 Matlab 命令行。我不是说手动选择要执行的代码。
在 Java 中使用静态 main
方法和在 Python 中通过在类定义之外(可能在 if __name__==__main__
block 中)存在类似的行为。
最佳答案
简短的回答是“不”; 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
或者你可以创建一个名为 main 的静态方法:
methods (Static = true)
function main()
%enabes: myClass.main()
...
end
IDE 仍然不知道如何处理您的 M 文件以“运行它”,但您可以从命令行或另一个 M 文件正确运行它。
最后一句话不是 100% 正确 - 正如 Egon 在下面指出的那样,您可以让 MATLAB 的 IDE 运行该代码 - 使用“运行配置”:http://www.mathworks.com/help/matlab/matlab_prog/run-functions-in-the-editor.html
关于oop - Matlab 有类似于 main 方法的东西吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801944/