exponenta event banner

Ввод функций валидации синтаксического анализатора

Эта тема показывает способы задать функции валидации, которые вы передаете Входному Синтаксическому анализатору, чтобы проверить пользовательские входные параметры функции.

Входные методы Синтаксического анализатора addRequired, addOptional и addParameter каждый принимает дополнительный указатель на функцию валидации. Определяйте указатели на функцию с в (@) символ.

Функции валидации должны принять единственный входной параметр, и они должны или возвратить скалярное логическое значение (true или false) или ошибка. Если функция валидации возвращает false, Входной Синтаксический анализатор выдает ошибку, и ваша функция прекращает обрабатывать.

Существует несколько способов задать функции валидации:

  • Используйте существующую функцию MATLAB®, такую как ischar или isnumeric. Например, проверьте, что необходимый входной параметр под названием num является числовым:

    p = inputParser;
    checknum = @isnumeric;
    addRequired(p,'num',checknum)
    
    parse(p,'text')
    The value of 'num' is invalid. It must satisfy the function: isnumeric.
  • Создайте анонимную функцию. Например, проверьте, что входной параметр num является числовым скаляром, больше, чем нуль:

    p = inputParser;
    checknum = @(x) isnumeric(x) && isscalar(x) && (x > 0);
    addRequired(p,'num',checknum)
    
    parse(p,rand(3))
    The value of 'num' is invalid. It must satisfy the function: @(x) isnumeric(x) && isscalar(x) 
    && (x>0).
  • Задайте свою собственную функцию, обычно локальная функция в том же файле как ваша первичная функция. Например, в файле с именем usenum.m, задайте локальную функцию под названием checknum, который выпускает пользовательские сообщения об ошибке, когда входной параметр num к usenum не является числовым скаляром, больше, чем нуль:

    function usenum(num)
       p = inputParser;
       addRequired(p,'num',@checknum);
       parse(p,num);
    
    function TF = checknum(x)
       TF = false;
       if ~isscalar(x)
           error('Input is not scalar');
       elseif ~isnumeric(x)
           error('Input is not numeric');
       elseif (x <= 0)
           error('Input must be > 0');
       else
           TF = true;
       end
    

    Вызовите функцию с недопустимым входным параметром:

    usenum(-1)
    Error using usenum (line 4)
    The value of 'num' is invalid. Input must be > 0

Смотрите также

| |

Связанные примеры

Больше о