2011-12-12 163 views
4

我完全是MATLAB编程的新手,但我收到了一个脚本,不知怎的,这些脚本不再提供function的所有end语句。可以在MATLAB函数中省略“结束”吗?

例如:

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声明?

回答

10

我想在典型的MATLAB代码中,通常不会忽略end s。这样做没有问题,但是如果你想把它们放在那也很好。我不会说这是做出任何选择的不好的风格(FWIW,我通常会把它们排除在外)。

有一些在何种情况下,他们必须在那里,如:

  1. 如果你正在编写面向对象的代码,方法函数需要有一个end
  2. 嵌套函数都需要有一个end
  3. 如果文件中的任何功能或子功能有一个end,他们都必须。

由于简单的MATLAB代码在那里典型的一块大都有每个文件包含一个功能,可能与一些子功能,没有功能筑巢,而不是面向对象的,它会大多离开了end秒。

4

这完全没错,matlab认识到文件的结尾是函数的结尾。 但是,如果在同一个文件中有多个(嵌套)函数,则必须编写end

例如:

function y=f(x) 
    y=x^2+g(x) 
    function y2=g(x2) 
    y2=2*x2; 
    end 
end 
+0

不,最后一个不是可选的,因为你关闭了'g(x2)'。 – abcd

+0

谢谢,我不知道。它已被编辑。 – Oli

1

是的,虽然它被认为是不良作风(迂腐明智),有些人不喜欢在他们的代码多余线条。

相关问题