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

Совет

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

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

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

Введенный в R2007a