多くの場合、私の関数には、有効なオプションの数が少ない文字列引数が含まれています。たとえば、の最後の引数に似たモードを表す場合があります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の時点で、MatlabsCodeAnalyzerはこの使用法に対して警告を発し始めていますsprintf
。それでも機能しますが、サポートされている方法ではない可能性があり、今後も機能するかどうかわからないため、警告を単に無視または抑制することには消極的です。
別の解決策はを使用することevalc('disp(valid_modes)')
ですが、その解決策は私を吐き気にさせます。
文字列のセル配列の値を便利かつエレガントに表示するにはどうすればよいですか?