在查找MATLAB和Octave的代码片段时,我注意到函数以各种方式结束,并且它们似乎都可以正常工作。具体来说,我说的是驻留在其特定文件中的功能。
MATLAB似乎以end
结尾。
function y = average(x)
y = sum(x)/length(x);
end
Octave以endfunction
结尾。
function retval = avg (v)
retval = sum (v) / length (v);
endfunction
但是,我的函数运行正常,在函数末尾没有任何关键字。
所以我的问题是,MATLAB / Octave对函数定义的结尾有多严格。
答案 0 :(得分:5)
endfunction
endfunction
是Octace特定的,这不是有效的MATLAB语法(endfor
等也是如此...)end
来实现兼容性。end
的严格性您可能想阅读MATLAB documentation for nested functions
如果函数是文件中唯一的函数,则不必以end
语句结尾。从文档中:
通常,函数不需要end语句。
有关SO的一个相关问题:Are multiple functions in one .m file nested or local when "end" isn't used,相关摘录也来自文档:
要将任何函数嵌套在程序文件中,该文件中的所有函数必须使用end语句。
因此,在具有唯一功能的功能文件中,简短的回答是“完全不严格”。但是,使用end
是一个好习惯,因此,如果要添加其他本地函数,将减少歧义,并提高灵活性。