addOptional

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

Синтаксис

addOptional(p,argName,defaultVal)
addOptional(p,argName,defaultVal,validationFcn)

Описание

пример

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