2010-02-08 13 views
11

Questo è difficile da cercare: cosa fanno le virgole di fine riga in Matlab? Nel paio di piccoli test che ho fatto, non sembrano che il codice si comporti diversamente. Mi piacerebbe sapere perché sono finiti in questo codice che non ho scritto (ma che devo mantenere).Cosa fanno le virgole di fine riga in Matlab?

Esempi di ciò che intendo:

if nargin<1, 
    % code 
end 

if isError, 
    % code 
end 

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

risposta

15

Secondo la documentation for the comma character in MATLAB, una delle sue funzioni è di separare le istruzioni all'interno della linea. Se c'è una sola istruzione su una riga, la virgola non è necessaria. Non mi piace vederlo lì, anche se so che alcune persone scrivono il codice in questo modo.

1

Credo la virgola in MATLAB è come la virgola in C. Si separa comandi, in modo da poter inserire più comandi in una riga separate da virgole.

Il modo in cui è stato scritto il programma, credo che le virgole non facciano alcuna differenza.

4

Se leggete strettamente codificato M-file (ad esempio, molti dei built-in funzioni di MATLAB) vi farà scoprire una variante del costrutto if ... fine che è scritto su una sola riga. Ecco un esempio
se x < 0, disp ('immaginario'); fine
Si noti la virgola tra x < 0 e disp (...). Apparentemente la virgola dice all'interprete MATLAB che il test condizionale è terminato. A mia conoscenza, questo è solo il luogo in cui un'istruzione (OK, parte di una dichiarazione) termina con una virgola. È solo una di quelle stranezze che i veri credenti usano senza esitazione.

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

+0

Ma se c'è un'interruzione di linea, è solo superfluo, giusto? –

+0

@ Benjamin Sì. @Albert anche occasionalmente vedi 'try ,, catch' e' for ,, end' sulla stessa riga. – KitsuneYMG

8

Come altri hanno sottolineato, le virgole alla fine di una riga non sono necessarie. Sono davvero solo per separare le affermazioni che sono sulla stessa linea. mlint e l'Editor sarà anche darvi un messaggio di avviso se si utilizza uno senza bisogno di esso:

enter image description here

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

Haha, immagino sia quello che ottieni usando 'vim' per modificare il codice Matlab ... Avevo qualcosa da usare con MLINT. Potrebbe darci una prova ora. –

Problemi correlati