通常,我的函数包含一个包含少量有效选项的字符串参数。例如,它可能表示类似于 的最后一个参数的模式interp1
。当用户传递不正确的值时,我喜欢在错误消息中给出有效选项的列表。
目前,我这样解决它:
function out = my_func(mode)
valid_modes = {'rectangular', 'gaussian'};
switch mode
case 'rectangular'
% do something
case 'gaussian'
% do something else
otherwise
error(['atmlab:' mfilename ':invalid'], 'Invalid mode: %s. Valid modes: %s', mode, sprintf('%s ', valid_modes))
end
我正在利用的技巧是sprintf
可以采用一个单元格数组,然后输出多个字符串的串联。但是,这种行为似乎没有记录,从 Matlab 2012b 开始,Matlabs 代码分析器已经开始警告不要使用sprintf
. 它仍然有效,但它可能不是一种受支持的方式,我不知道它是否会在未来继续有效,所以我不愿意简单地忽略或抑制警告。
另一种解决方案是使用evalc('disp(valid_modes)')
,但该解决方案让我呕吐。
如何方便优雅地显示字符串元胞数组的值?