在寻找 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 对函数定义的结尾有多严格。
最佳答案
endfunction
endfunction
是 Octave 特有的,不是有效的 MATLAB 语法(endfor
等也是如此...)- 如果您知道代码只会在 Octave 中运行,那么这种语法可以让您的循环/函数/...更清晰、更快速地匹配。请注意,您的代码与 MATLAB 不兼容。
- 我相信你也可以在 Octave 中使用
end
来实现兼容性。
使用的严格性end
您可能想阅读 MATLAB documentation for nested functions
当函数是文件中的唯一函数时,您不必使用
end
语句来结束函数。来自文档:Typically, functions do not require an end statement.
这是关于 SO 的相关问题:Are multiple functions in one .m file nested or local when "end" isn't used ,相关摘录如下,也来自文档:
To nest any function in a program file, all functions in that file must use an end statement.
因此,在具有唯一函数的函数文件中,简短的回答是“根本不严格”。但是,使用 end
是一种很好的做法,因此如果您要添加其他本地函数,则可以减少歧义并提供更大的灵 active 。
关于matlab - 如何结束 MATLAB/Octave 函数定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51208344/