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'

Пример: 'адрес'

Типы данных: char | string

Значение по умолчанию для входного параметра, заданного как любой тип данных. Если argName не является входным параметром к функции, когда функция parse анализирует входные параметры, то это присваивает argName значение defaultVal.

Функция, чтобы подтвердить аргумент, заданный как указатель на функцию.

Указатель на функцию должен быть сопоставлен с функцией, которая возвращает true или false, или проходит тест или выдает ошибку. Оба типа функций должны принять единственный входной параметр.

Пример: (s) isstring (s)

Пример: (x) isnumeric (x) &&isscalar (x)

Пример: (n) validateattributes (n, {'числовой'}, {'неотрицательный'})

Типы данных: function_handle

Советы

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

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

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

Представленный в R2007a

Была ли эта тема полезной?