16

MATLABでデバッグするとき、診断印刷に無名関数を使用します。例えば、

debug_disp = @(str) disp(str);
debug_disp('Something is up.')
...
debug_disp = @(str) disp([]);
% diagnostics are now hidden

「ゴブル」として使用disp([])することは、私には少し汚いようです。より良いオプションはありますか?明らかな(?)メソッドは機能しません:

debug_disp = @(str) ;

これは、診断印刷だけでなく、他の関数型言語アプリケーションにも役立つと思います。

4

5 に答える 5

18

通常の何もしない関数をコードベースに追加できます。

function NOP(varargin)
%NOP Do nothing
%
% NOP( ... )
%
% A do-nothing function for use as a placeholder when working with callbacks
% or function handles.

% Intentionally does nothing

そうすれば、匿名関数の代わりに関数ハンドルを使用して、何かを操作したくない場合に使用できます。

debug_disp = @NOP;

今では自己文書化されており、disp()の間違った入力を取得するのではなく、何もしないつもりであることが明示されています。ソースコードで明らかになります。さらに、デバッガーで関数ハンドルを保持している変数を調べると、「@ NOP」と表示されます。これは、匿名ハンドルよりも読みやすい場合があります。また、NOPへの発信者のリストを確認することで、「プロファイルレポート」の出力ですべてのnopped操作のリストを取得できます。

Matlabの組み込みの@dealを使用することもできます。これは、縮退した場合は何もせず、何も返しません。

于 2011-06-14T18:24:14.970 に答える
11

私は思うdisp([])disp('')、完全に受け入れられます。何も返さず、副作用もありません。

于 2009-12-15T14:14:57.463 に答える
4

これは何もしない無名関数です。何もせず、無視できる空の配列を返します。後にセミコロンを付けて、dispを抑制する必要があります。

debug_disp = @(str) [];

disp([])も正常に機能するはずです。どちらのスタイルでも。

于 2009-12-15T14:47:49.280 に答える
3

匿名関数の本体を置き換えるための「何もしない」コマンドを探しているだけなら、おそらくDRAWNOWを使用します。

debug_disp = @(str) drawnow;

これにより、テキストを表示する代わりに、イベントキューがフラッシュされ、グラフィックが更新されます。

于 2009-12-15T03:32:46.280 に答える
2

試すdebug_disp = @(str)(1);

于 2009-12-15T17:45:13.153 に答える