Main Content

関数 disp のオーバーロード

表示方法

オブジェクトの表示をカスタマイズする最善のアプローチは、matlab.mixin.CustomDisplay のサブクラスを作成することです。ただし、matlab.mixin.CustomDisplay からユーザー クラスを派生させない場合は、関数 disp をオーバーロードして、MATLAB® によるユーザー クラスのオブジェクトの表示方法を変更します。

MATLAB は、セミコロンで終了しないステートメント内でオブジェクトが参照される場合、常に関数 display を呼び出します。たとえば、以下のステートメントは変数 a を作成します。MATLAB が display を呼び出すことで、コマンド ラインに a の値が表示されます。

a = 5
a =
    5

display は続いて disp を呼び出します。

オーバーロードされた disp

代入が行われると、組み込み関数 display は表示されている変数の名前を出力します。それ以外の場合は ans を変数名として使用します。その後、displaydisp を呼び出し、値の実際の表示を処理します。

表示されている変数が、disp をオーバーロードする、クラスのオブジェクトである場合、MATLAB はオーバーロードされたメソッドを常に呼び出します。MATLAB は 2 つの引数で display を呼び出し、変数名を 2 番目の引数として渡します。

disp と display の関係

以下が発生すると、MATLAB は組み込み関数 display を呼び出します。

  • MATLAB で値を返し、セミコロンで終了しないステートメントを実行する

  • 左辺に変数がない場合に、MATLAB は ans = に続けて値を表示する

  • コードが、関数 display を明示的に呼び出す

display を呼び出すと、以下のように動作します。

  • 入力引数が既存の変数である場合、display は変数名、等号、値の順に表示する

  • 入力が 1 つの式の結果である場合、display は ans = を表示しない

以下が発生すると、MATLAB は組み込み関数 disp を呼び出します。

  • 組み込み関数 display が、disp を呼び出す

  • コードが、disp を明示的に呼び出す

空の組み込み型 (数値型、charstructcell) に対して、関数 display は以下を表示します。

  • [] — 数値型

  • "0x0 struct array with no fields." — 空の structs

  • "0x0 empty cell array" — 空の cell 配列

  • "0x0 empty char array" — 空の char 配列

  • "0x0 empty string array" — 空の string 配列

disp は次の点で display とは異なります。

  • disp は変数名や ans を表示しない

  • disp は、組み込み型 (数値型、charstructcell) の値が空の場合はなにも表示しない

関連するトピック