输入解析器和函数句柄

时间:2013-02-07 09:18:29

标签: matlab parsing handle

我正在使用Matlab输入解析器,并希望使用以下代码解析函数句柄:

p = inputParser;
p.addOptional('progresscallback', 0, @(x) isa(x,'function_handle') );
p.parse(varargin{:});

这对于给定的函数句柄很有效,但对于

没有句柄则失败
  

争论' progresscallback'验证失败@(x)isa(x,' function_handle')。

现在我想知道如何构建测试功能或默认值以使其工作。

1 个答案:

答案 0 :(得分:0)

如果您只想接受空句柄或函数句柄输入,可以像这样修改测试函数:

@(x) isempty(x) || isa(x,'function_handle')

如果第一个测试已经为真,则短路OR(||)将不会评估测试的后半部分。顺便说一句,您可能还想将默认值设置为[]