Можно ли не указывать «конец» в функциях MATLAB? - PullRequest
4 голосов
/ 12 декабря 2011

Я совершенно новичок в программировании на MATLAB, но я получил скрипт, который каким-то образом опускает все операторы end для function с.

Например:

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)
% ....

Это стиль "хорошо"? Очевидно, что при попытке его запустить нет синтаксических ошибок, и программа работала всякий раз, когда мы ее использовали. Функции выполняются автоматически до следующего оператора function?

Ответы [ 3 ]

10 голосов
/ 12 декабря 2011

Я бы предположил, что в типичном коде MATLAB более распространено, чем не пропускать end s. Это не проблема, но если вы хотите вставить их, это тоже хорошо. Я бы не сказал, что это плохой стиль - делать выбор (FWIW, я обычно их опускаю).

Есть некоторые обстоятельства, при которых они должны быть там, например:

  1. Если вы пишете объектно-ориентированный код, функции методов должны иметь end
  2. Вложенные функции должны иметь end
  3. Если какая-либо функция или подфункция в файле имеет end, все они должны.

Так как типичный фрагмент простого кода MATLAB там, в основном, имеет одну функцию на файл, возможно, с некоторыми подфункциями, не имеет вложенности функций и не является объектно-ориентированным, он в основном пропустит end s.

4 голосов
/ 12 декабря 2011

Вполне нормально, Matlab понимает, что конец файла - это конец функции.Однако, когда у вас есть несколько (вложенных) функций в одном файле, вы должны написать end.

Например:

function y=f(x)
  y=x^2+g(x)
  function y2=g(x2)
    y2=2*x2;
  end
end
1 голос
/ 12 декабря 2011

Да, хотя это считается плохим стилем (педантично), некоторые люди предпочитают не иметь лишних строк в своем коде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...