Main Content

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 函数并显示结果。

parse(p)
p.Results
ans = struct with fields:
    myInput: 13

使用输入值 42 调用 parse 函数并显示结果。

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'});

创建一个输入解析器模式,其中包含默认值为 1 的可选参数 evenPosNum。使用 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

用于验证参数的函数,指定为函数句柄。

函数句柄必须与函数关联,该函数要么返回 truefalse,要么通过测试或引发错误。这两个类型的函数都必须接受单个输入参数。

示例: @(s)isstring(s)

示例: @(x)isnumeric(x)&&isscalar(x)

示例: @(n)validateattributes(n,{'numeric'},{'nonnegative'})

数据类型: function_handle

提示

  • 使用 addOptional 函数添加到输入解析器模式中的参数是位置参数。因此,将它们添加到输入解析器模式中的顺序应该与传递给函数时的顺序相同。

  • 为可选的字符串参数指定验证函数。没有验证函数,输入解析器会将字符串参数解释为无效的参数名称并引发错误。

  • 使用 addOptional 将单个参数添加到输入解析器模式。如果要解析可选的名称-值对组,请使用 addParameter 函数。

版本历史记录

在 R2007a 中推出