exponenta event banner

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

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

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

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

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

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

    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

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

| |

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

Больше о