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

4

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

MATLAB 似乎使用 end 来结束它们的函数。

function y = average(x)
  y = sum(x)/length(x); 
end

Octave ends its functions with endfunction.

function retval = avg (v)
  retval = sum (v) / length (v);
endfunction

然而,我的函数在没有任何关键字的情况下完美地工作。

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

1个回答

9

endfunction

  • endfunction是Octave特有的语法,而不是MATLAB的有效语法(同样适用于 endfor等)。
  • 如果你知道代码只在Octave中运行,这种语法可以使你的循环/函数匹配更清晰、更快捷。但要注意,你的代码将与MATLAB不兼容。
  • 我认为在Octave中也可以仅使用end来实现兼容。

end的严格性

您可能需要阅读MATLAB嵌套函数文档

因此,在仅有一个函数的函数文件中,“严格性”很低。但是,最好使用end,因为这样可以减少歧义,并且如果您要添加其他本地函数,则更灵活。


Octave 允许使用简单的 end 而非特定的 endX - carandraug
很好,但我发现这个答案中的当前措辞有点误导。 "ends" 在任何函数文件定义中都是可选的,而不仅仅是单个函数的文件。 - John
@John 我不确定你所说的对于子函数是否正确,但对于嵌套函数来说高度不可能是正确的。而且,无论如何,标注函数结束的方式都更加清晰明了。 - Tasos Papastylianou
1
@Tasos 这个答案涵盖了子/嵌套函数。 - Wolfie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接