2010-02-08 23 views
11

這很難查找:Matlab中的行尾逗號是做什麼的?在我做的幾個小測試中,他們似乎沒有讓代碼表現出任何不同。我想知道,因爲他們都在我沒有寫的代碼中(但必須維護)。我的意思Matlab中的結尾逗號是做什麼的?

例子:

if nargin<1, 
    % code 
end 

if isError, 
    % code 
end 

try, 
    % code 
    while 1, 
     % even more code 
    end 
catch, 
    % code 
end 

回答

15

按照documentation for the comma character in MATLAB,其功能之一是一行內的分開的語句。如果一行中只有一條語句,則不需要逗號。我不喜歡在那裏看到它,儘管我知道有些人用這種方式編寫代碼。

1

我覺得在MATLAB中的逗號,就像是C.分號它分離命令,所以你可以把多個命令在逗號分隔的一行。

您的程序寫入的方式,我相信逗號沒有區別。

4

如果你讀了嚴格的代碼的M文件(例如,許多內置功能的MATLAB),你會發現,在一行上寫的,如果......最終結構的變體。這裏是一個例子
if x < 0,disp('imaginary'); end
注意x < 0和disp(...)之間的逗號。顯然這個逗號告訴MATLAB解釋器,條件測試已經結束。據我所知,這只是一個聲明(好的,聲明的一部分)以逗號結尾的地方。這只是真正的信徒毫不猶豫地使用的那些怪癖之一。

http://web.cecs.pdx.edu/~gerry/MATLAB/programming/basics.html

+0

但是,如果有一個換行符,它只是多餘的,對不對? – 2010-02-08 15:51:26

+0

@Benjamin是的。 @Albert,你偶爾也會在同一行看到'try,catch'和'for end'。 – KitsuneYMG 2011-01-23 04:20:41

8

正如其他人指出的那樣,在行尾的逗號是不必要的。它們實際上只是用於分隔同一行中的語句。 mlint和編輯,甚至會給你一個警告,如果你使用一個,而不需要它:

enter image description here

>> mlint comma_test.m 
L 1 (C 4): Extra comma is unnecessary. 
+2

哈哈,我想這就是你用'vim'編輯Matlab代碼所得到的結果......我有一些東西要用MLINT。現在可能不得不嘗試一下。 – 2010-02-10 14:04:22