Лучшая практика при проверке ввода в MATLAB - PullRequest
4 голосов
/ 22 сентября 2011

Когда лучше использовать inputParser, чем assert при проверке ввода в функции MATLAB. Или есть другие, еще лучшие инструменты?

1 Ответ

5 голосов
/ 22 сентября 2011

Я лично нашел, что использование inputParser излишне сложно. Для Matlab всегда есть 3 вещи для проверки - наличие, тип и диапазон / значения. Иногда вы должны назначить значения по умолчанию. Вот пример кода, очень типичный для моей проверки ошибок: dayofWeek - аргумент, третий в функции. (Добавлены дополнительные комментарии.) Большая часть этого кода предшествует существованию assert() в Matlab. Я использую утверждения в моем более позднем коде вместо конструкций if ... error().

%Presence
if nargin < 3 || isempty(dayOfWeek);
    dayOfWeek = '';
end

%Type
if ~ischar(dayOfWeek);
    error(MsgId.ARGUMENT_E, 'dayOfWeek must be a char array.');
end

%Range
days = { 'Fri' 'Sat' 'Sun' 'Mon' 'Tue' 'Wed' 'Thu' };

%A utility function I wrote that checks the value against the first arg, 
%and in this case, assigns the first element if argument is empty, or bad.
dayOfWeek = StringUtil.checkEnum(days, dayOfWeek, 'assign');

%if I'm this far, I know I have a good, valid value for dayOfWeek
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...