Matlab中的inputParser
类对于在调用某个函数时综合检查用户传递的参数非常有用。例如:
function [] = TestValidation(varargin)
%[
p = inputParser();
p.addParameter('Toto', 'Hello', @isnumeric);
p.parse(varargin{:});
%]
end
如果用户尝试为参数Toto
分配非数值,则会引发错误(例如TestValidation('Toto', 'Hello')
==>引发错误,因为Hello
不是数字)。
无论如何调用上面没有参数的函数(即TestValidation()
),即使Toto
的默认值是一个字符串(即Hello
),也不会引发错误。
是否有一种简单的方法可以强制inputParser
验证还的默认值,还是只能手动完成 a posteriori ?
答案 0 :(得分:2)
这是一个类,创建一个实现所需功能的子类:
classdef myInputParser<inputParser
methods
function addParamValue(obj,name,default,fcn,varargin)
assert(fcn(default));
addParamValue@inputParser(obj,name,default,fcn,varargin{:});
end
end
end
>> p = myInputParser();
>> p.addParamValue('Toto', 'Hello', @isnumeric);
Error using myInputParser/addParamValue
(line 4)
Assertion failed.