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