2011-12-12 75 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

是的,雖然它被認爲是不良作風(迂腐明智),有些人不喜歡在他們的代碼多餘線條。

相關問題