通常,我的函数包含一个字符串参数,其中包含少量有效选项。例如,它可能表示类似于 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,Matlab 代码分析器已经开始警告这种使用方式。它仍然可以工作,但可能不是一种受支持的方式,我不知道它将来是否会继续工作,所以我不愿意简单地忽略或抑制警告。另一种解决方案是使用
evalc('disp(valid_modes)')
,但这个解决方案让我感到恶心。如何方便、优雅地显示一个字符串单元数组的值?