関数 disp のオーバーロード
表示方法
オブジェクトの表示をカスタマイズする最善のアプローチは、matlab.mixin.CustomDisplay
のサブクラスを作成することです。ただし、matlab.mixin.CustomDisplay
からユーザー クラスを派生させない場合は、関数 disp
をオーバーロードして、MATLAB® によるユーザー クラスのオブジェクトの表示方法を変更します。
MATLAB は、セミコロンで終了しないステートメント内でオブジェクトが参照される場合、常に関数 display
を呼び出します。たとえば、以下のステートメントは変数 a
を作成します。MATLAB が display
を呼び出すことで、コマンド ラインに a
の値が表示されます。
a = 5
a = 5
display
は続いて disp
を呼び出します。
オーバーロードされた disp
代入が行われると、組み込み関数 display
は表示されている変数の名前を出力します。それ以外の場合は ans
を変数名として使用します。その後、display
は disp
を呼び出し、値の実際の表示を処理します。
表示されている変数が、disp
をオーバーロードする、クラスのオブジェクトである場合、MATLAB はオーバーロードされたメソッドを常に呼び出します。MATLAB は 2 つの引数で display
を呼び出し、変数名を 2 番目の引数として渡します。
disp と display の関係
以下が発生すると、MATLAB は組み込み関数 display
を呼び出します。
MATLAB で値を返し、セミコロンで終了しないステートメントを実行する
左辺に変数がない場合に、MATLAB は
ans =
に続けて値を表示するコードが、関数
display
を明示的に呼び出す
display
を呼び出すと、以下のように動作します。
入力引数が既存の変数である場合、
display
は変数名、等号、値の順に表示する入力が 1 つの式の結果である場合、display は
ans =
を表示しない
以下が発生すると、MATLAB は組み込み関数 disp
を呼び出します。
組み込み関数
display
が、disp
を呼び出すコードが、
disp
を明示的に呼び出す
空の組み込み型 (数値型、char
、struct
、cell
) に対して、関数 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
は、組み込み型 (数値型、char
、struct
、cell
) の値が空の場合はなにも表示しない