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