如果其他参数不满足某些条件,我想在inputParser
中创建一个参数。我现在可以这样做的一种方法是编写一个子分析器来检查输入并处理它。例如:
function foo = subparser(bar, varargin)
p = inputParser; %initialize master parser
addRequired(p, 'bar', @(x) isscalar(x))
addParameter(p, 'conditional', 1, @(x) isscalar(x) || (iscell(x) && ~isempty(x))
addParameter(p, 'requireMe', [], @(x) isscalar(x))
parse(p,bar,varargin{:})
if isempty(p.Results.requireMe) % conditional requirement not supplied
if iscell(p.Results.conditional) % we can get a default from the parameters supplied
p.Results.requireMe = size(p.Results.conditional{1}, 1)
else % argument is required
error("'requireMe' is required when using default or scalar 'conditional'")
end
end
foo = p.Results
end
是否有更优雅的方式来处理这个问题,或许使用inputParser的内置功能?