exponenta event banner

addOptional

Добавление необязательного позиционного аргумента во входную схему синтаксического анализатора

Описание

пример

addOptional(p,argName,defaultVal) добавляет необязательный позиционный входной аргумент, argName, во входную схему синтаксического анализатора p. Если входные данные функции не включают значение для этого дополнительного ввода, анализатор входных данных присваивает ему значение defaultVal.

пример

addOptional(p,argName,defaultVal,validationFcn) определяет функцию проверки для входного аргумента.

Примеры

свернуть все

Создание inputParser и добавьте необязательный вход в схему входного синтаксического анализатора. Назовите аргумент myinputи присвойте ему значение по умолчанию 13.

p = inputParser;
argName = 'myInput';
defaultVal = 13;
addOptional(p,argName,defaultVal)

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

parse(p)
p.Results
ans = struct with fields:
    myInput: 13

Позвоните в parse функция с входным значением 42 и отображение результатов.

parse(p,42)
p.Results
ans = struct with fields:
    myInput: 42

Проверить, что дополнительный вход с именем num, со значением по умолчанию 1, является числовым скаляром, большим нуля.

Создайте схему входного синтаксического анализатора. Для функции проверки, @(x) создает дескриптор анонимной функции, которая принимает один ввод.

p = inputParser;
argName = 'num';
defaultVal = 1;
validationFcn = @(x) isnumeric(x) && isscalar(x) && (x > 0);
addOptional(p,argName,defaultVal,validationFcn)

Синтаксический анализ недопустимого входного аргумента, например -1.

parse(p,-1)
The value of 'num' is invalid. It must satisfy the function: @(x)isnumeric(x)&&isscalar(x)&&(x>0).

Определение функции проверки с помощью validateattributes. Убедитесь, что аргумент является числовым, положительным и четным.

validationFcn = @(x) validateattributes(x,{'numeric'},...
    {'even','positive'});

Создание входной схемы синтаксического анализатора, включающей дополнительный evenPosNum аргумент со значением по умолчанию 1. Проверить входной аргумент с помощью validationFcn.

p = inputParser;
argName = 'evenPosNum';
defaultVal = 1;
addOptional(p,argName,defaultVal,validationFcn)

Выполните синтаксический анализ входной строки. Не удается выполнить синтаксический анализ.

parse(p,"hello")
The value of 'evenPosNum' is invalid. Expected input to be one of these types:

numeric

Instead its type was string.

Разбор нечетного числа. Не удается выполнить синтаксический анализ.

 parse(p,13)
The value of 'evenPosNum' is invalid. Expected input to be even.

Разобрать четное положительное число. Разбор проходов.

parse(p,42)

Входные аргументы

свернуть все

Входная схема синтаксического анализатора, заданная как inputParser объект.

Имя входного аргумента, заданного как вектор символа или скаляр строки.

Пример: 'firstName'

Пример: 'address'

Типы данных: char | string

Значение по умолчанию для входных данных, указанное как любой тип данных. Если argName не является входом в функцию, когда parse функция анализирует входы, затем назначает argName стоимость defaultVal.

Функция для проверки аргумента, указанная как дескриптор функции.

Дескриптор функции должен быть связан с функцией, возвращающей true или false, или проходит тест, или выдает ошибку. Оба типа функций должны принимать один входной аргумент.

Пример: @(s)isstring(s)

Пример: @(x)isnumeric(x)&&isscalar(x)

Пример: @(n)validateattributes(n,{'numeric'},{'nonnegative'})

Типы данных: function_handle

Совет

  • Аргументы, добавленные во входную схему синтаксического анализатора с помощью addOptional функции позиционные. Поэтому добавьте их во входную схему синтаксического анализатора в том же порядке, в котором они передаются в функцию.

  • Для необязательных аргументов строки укажите функцию проверки. Без функции проверки входной синтаксический анализатор интерпретирует строковый аргумент как недопустимое имя параметра и выдает ошибку.

  • Использовать addOptional для добавления отдельного аргумента во входную схему синтаксического анализатора. Если требуется проанализировать необязательную пару имя-значение, используйте addParameter функция.

Представлен в R2007a