如何结束MATLAB/Octave函数定义?

How to end MATLAB/Octave function definitions?

在寻找 MATLAB 和 Octave 的代码片段时,我注意到函数以各种方式结束,而且它们似乎都能正常工作。具体来说,我说的是驻留在其特定文件中的函数。

MATLAB 似乎以 end.

结束他们的功能
function y = average(x)
  y = sum(x)/length(x); 
end

Octaveendfunction.

结束其功能
function retval = avg (v)
  retval = sum (v) / length (v);
endfunction

但是,我的函数在函数末尾没有任何关键字的情况下工作得很好。

所以我的问题是,MATLAB/Octave 对函数定义的结尾有多严格。

endfunction

  • endfunction 是特定于 Octave 的,并且不是有效的 MATLAB 语法(endfor 等也是如此...)
  • 如果您知道代码在 Octave 中只会是 运行,那么此语法可以使匹配您的 loops/functions/... 更清晰、更快捷。请注意,您的代码与 MATLAB 不兼容。
  • 我相信你也可以只在 Octave 中使用 end 以实现兼容性。

使用 end

的严格性

您可能想阅读 MATLAB documentation for nested functions

  • 当函数是文件中的唯一函数时,您不必使用 end 语句结束该函数。来自文档:

    Typically, functions do not require an end statement.

  • 这是一个关于 SO 的相关问题:,相关摘录是这样的,也来自文档:

    To nest any function in a program file, all functions in that file must use an end statement.

因此在具有唯一函数的函数文件中,简短的回答是“一点也不严格”。但是,使用 end 是一种很好的做法,这样如果您要添加其他本地函数,歧义就会减少,灵活性也会提高。