在验证 MATLAB 函数中的输入时,什么时候使用 inputParser 比断言更好。或者还有其他更好的工具可用吗?
最佳答案
我个人发现使用 inputParser 不必要地复杂。对于 Matlab,总是有 3 件事需要检查 - 存在、类型和范围/值。有时您必须分配默认值。这是一些示例代码,非常典型的我的错误检查:dayofWeek
是参数,函数中的第三个。 (添加了额外的注释。)此代码的大部分时间早于 Matlab 中 assert()
的存在。我在后面的代码中使用断言而不是 if ... error()
结构。
%Presence
if nargin < 3 || isempty(dayOfWeek);
dayOfWeek = '';
end
%Type
if ~ischar(dayOfWeek);
error(MsgId.ARGUMENT_E, 'dayOfWeek must be a char array.');
end
%Range
days = { 'Fri' 'Sat' 'Sun' 'Mon' 'Tue' 'Wed' 'Thu' };
%A utility function I wrote that checks the value against the first arg,
%and in this case, assigns the first element if argument is empty, or bad.
dayOfWeek = StringUtil.checkEnum(days, dayOfWeek, 'assign');
%if I'm this far, I know I have a good, valid value for dayOfWeek
关于matlab - 在 MATLAB 中验证输入时的最佳实践,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7514374/