如何在函数定义中使用多个addOptional
?
addOptional
是添加位置参数。所以我想用它
以下列方式。
addOptional
那里。 myfunc('Jim', 12)
和myfunc('Jim', 12, 'cm')
。
但是,后者会抛出一个错误:
论证' cm'是一个字符串,与任何参数名称都不匹配。它未能验证参数'单位'
但是我可以使用myfunc('Jim', 12, 'units', 'cm')
,这似乎是第二个addOptional
表现为addParameter
,不再像位置参数那样。我犯的错误是什么?我是否误解了addOptional
的某些内容?非常感谢!
以下是myfunc()
的定义:
function myfunc(name, varargin)
par = inputParser;
defaultHeight = 1;
defaultUnits = 'inches';
addRequired(par, 'name', @ischar);
addOptional(par, 'height', defaultHeight, @isnumeric);
addOptional(par, 'units', defaultUnits);
parse(par, name, varargin{:});
disp(par.Results)
我发现如果位置参数不是文字字符串(可能在helpdoc中称为字符向量,则whos
显示的类型为char
,例如{{1 ,),没有问题。例如,使用'any words'
定义为
myfunc('Jim', 3, 4)
MATLAB help doc并未提及有关其他位置参数的数据类型限制的任何内容。这是否意味着这是一个错误?
信息: