2010-02-08 19 views
11

Trudno to sprawdzić: co robią przecinki końcowe w programie Matlab? W kilku małych testach, które zrobiłem, nie wydaje się, żeby kod zachowywał się inaczej. Chciałbym wiedzieć, ponieważ wszyscy są w tym kodzie, których nie napisałem (ale muszę to zrobić).Co robią przecinki końcowe w programie Matlab?

Przykłady co mam na myśli:

if nargin<1, 
    % code 
end 

if isError, 
    % code 
end 

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

Odpowiedz

15

Według documentation for the comma character in MATLAB, jedną z jego funkcji jest oddzielenie oświadczenia w linii. Jeśli w linii występuje tylko jedna instrukcja, przecinek nie jest potrzebny. Nie lubię tego widzieć, chociaż wiem, że niektórzy ludzie piszą w ten sposób.

1

myślę przecinek w Matlab jest jak średnikiem w C oddziela ją poleceń, dzięki czemu można umieścić wiele poleceń w jednej linii oddzielone przecinkami.

Sposób, w jaki napisano Twój program, uważam, że przecinki nie mają znaczenia.

4

Jeśli czytasz mocno zakodowane pliki m (np. Wiele wbudowanych funkcji MATLAB), odkryjesz wariant konstruktu końcowego if ... zapisanego w jednym wierszu. Oto przykład:
jeśli x < 0, disp ("urojony"); koniec
Zauważ przecinek między x < 0 a disp (...). Najwyraźniej przecinek mówi tłumaczowi MATLAB, że test warunkowy się zakończył. Według mojej wiedzy jest to tylko miejsce, w którym instrukcja (OK, część instrukcji) kończy się przecinkiem. To tylko jedno z tych dziwactw, z których prawdziwi wierzący korzystają bez wahania.

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

+0

Ale jeśli istnieje podział wiersza, to po prostu zbędne, prawda? –

+0

@Benjamin Tak. @Albert również sporadycznie widzisz 'try ,, catch' i' for ,, end' na tej samej linii. – KitsuneYMG

8

Jak zauważyli inni, przecinki na końcu linii są niepotrzebne. Są tak naprawdę tylko do oddzielania instrukcji, które są na tej samej linii. mlint i redaktor będzie nawet dać ostrzeżenie, jeśli używasz jednego bez konieczności go:

enter image description here

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

Haha, domyślam się, że to właśnie dostajesz za użycie 'vim' do edycji kodu Matlab ... Miałem coś do użycia z MLINTem. Może teraz trzeba spróbować. –

Powiązane problemy