我对MATLAB编程完全不熟悉,但我收到了一个脚本,它以某种方式遗漏了end
的所有function
语句。
例如:
function pushbutton_open_Callback(hObject, eventdata, handles)
[FileName,PathName,FilterIndex] = uigetfile('*.txt','Select the CONFIG file');
if FileName~=0
init_session(hObject, FileName, PathName);
end
% shouldn't there be an "end" here?
function pushbutton_start_Callback(hObject, eventdata, handles)
% ....
那个syle“好吗”?显然,当我尝试运行它时没有语法错误,并且只要我们使用它,程序就会起作用。函数会自动运行到下一个function
语句吗?
答案 0 :(得分:10)
我猜想在典型的MATLAB代码中,更常见的是忽略end
s。这样做没有问题,但如果你想把它们放在那也没关系。我不会说做出任何选择都是不好的风格(FWIW,我通常会把它们排除在外)。
在某些情况下,他们必须在那里,例如:
end
end
end
,则必须全部使用。由于典型的简单MATLAB代码,每个文件大多有一个函数,可能有一些子函数,没有函数嵌套,并且不是面向对象的,它将大部分省略end
s。
答案 1 :(得分:4)
完全没问题,matlab明白文件的结尾是函数的结尾。
但是,如果在同一文件中有多个(嵌套)函数,则必须编写end
。
例如:
function y=f(x)
y=x^2+g(x)
function y2=g(x2)
y2=2*x2;
end
end
答案 2 :(得分:1)
是的,虽然它被认为是糟糕的风格(迂腐),但有些人不喜欢在代码中使用多余的行。