MATLAB是否支持前向声明?

时间:2012-11-11 12:56:03

标签: function matlab forward-declaration

是否可以在m文件中使用函数,该文件在同一文件的后续部分中实现:与其他编程语言(如C?)的风格类似?

2 个答案:

答案 0 :(得分:14)

当然。

在这样的m文件中,本地函数将在main函数之后声明。例如:

function y = main_func(x)
% # This is the main function
y = helper_func1(x) .* helper_func2(x);  % # Just an example

function h1 = helper_func1(x)
% # This is a helper function #1
h1 = x + 2;                              % # Just an example

function h2 = helper_func2(x)
% # This is a helper function #2
h2 = x * 2;                              % # Just an example

在此示例中,main_func可以毫无问题地调用helper_func1helper_func2。您可以测试运行它并自己查看:

   >> main_func(8)

   ans =        
       160

无需任何前瞻性声明。

顺便说一句,MATLAB附带的很多m文件都是以这种方式实现的。例如,corrcoef。使用type corrcoef,您可以看到。

注意:在提示符或脚本中不允许使用本地函数定义,因此必须在m文件中声明“main”函数。作为练习,将我的示例复制粘贴到新的m文件中,删除main_func的声明(仅限第一行),看看会发生什么。

答案 1 :(得分:0)

您可以使用相同的m文件来使用静态类来实现许多函数:

What was the original reason for MATLAB's one function = one file and why is it still so?