在MATLAB函数中省略“结束”是否可以?

时间:2011-12-12 13:10:59

标签: function matlab keyword

我对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语句吗?

3 个答案:

答案 0 :(得分:10)

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

在某些情况下,他们必须在那里,例如:

  1. 如果您正在编写面向对象的代码,则方法函数需要具有end
  2. 嵌套函数需要end
  3. 如果文件中的任何功能或子功能具有end,则必须全部使用。
  4. 由于典型的简单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)

是的,虽然它被认为是糟糕的风格(迂腐),但有些人不喜欢在代码中使用多余的行。