2010-02-08 73 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