addParameter

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

Описание

пример

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

В отличие от позиционных входов, добавленных с addRequired и addOptional функций, каждый параметр добавлен с addParameter соответствует двум входным параметрам: одному для имени и одному для значения.

пример

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

addParameter(___,'PartialMatchPriority',matchPriorityValue) задает приоритет для частичного соответствия конфликтующих имен параметров. Схема входа анализатора выбирает более низкие значения приоритета для более высоких таковых. Используйте эту опцию с любыми комбинациями входных аргументов в предыдущих синтаксисах.

Примеры

свернуть все

Создайте inputParser и добавьте пары "имя-значение" в схему входа.

p = inputParser;
paramName = 'myParam';
defaultVal = 0;
addParameter(p,paramName,defaultVal)

Передайте имя и значение параметра в parse метод и отображение результатов.

parse(p,'myParam',100);
p.Results
ans = struct with fields:
    myParam: 100

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

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

p = inputParser;
paramName = 'myParam';
defaultVal = 1;
errorMsg = 'Value must be positive, scalar, and numeric.'; 
validationFcn = @(x) assert(isnumeric(x) && isscalar(x) ...
    && (x > 0),errorMsg);
addParameter(p,paramName,defaultVal,validationFcn)

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

parse(p,'myparam',-1)
The value of 'myparam' is invalid. Value must be positive, scalar, and numeric.

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

validationFcn = @(x) validateattributes(x,{'char'},{'nonempty'});

Создайте схему входа синтаксического анализатора, которая включает необязательный аргумент пары "имя-значение" с именем параметра myName и значение по умолчанию 'John Doe'. Проверьте входной параметр с помощью validationFcn.

p = inputParser;
paramName = 'myName';
defaultVal = 'John Doe';
addParameter(p,paramName,defaultVal,validationFcn)

Определите myName как число. Синтаксический анализ завершается неуспешно.

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

char

Instead its type was double.

Проанализируйте вектор символов. Синтаксис проходит.

parse(p,'myName','George')

Входные параметры

свернуть все

Вход анализатора, заданная как 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

Приоритет для частичного соответствия конфликтующих имен параметров, заданный как положительное целое число. Схема входа анализатора выбирает более низкие значения приоритета для более высоких таковых. Если имена частичных параметров неоднозначны и имеют одинаковый приоритет, то parse выдает ошибку. Если имена неоднозначны, но имеют другие значения приоритета, то parse выдает предупреждение, указывающее на совпадающее имя.

Совет

  • Пары "имя-значение" параметра являются необязательными входами. При вызове функции пар "имя-значение" могут появиться в любом порядке после позиционных аргументов. Они принимают общую форму Name1,Value1,...,NameN,ValueN.

Введенный в R2013b