カスタム表示インターフェイス
コマンド ウィンドウの表示
MATLAB® では、セミコロンで終了していないステートメントから変数が返されると、コマンド ウィンドウに情報が表示されます。たとえば、次のステートメントでは、数値 7 が含まれたフィールドをもつ構造体が作成されます。
a.field1 = 7
MATLAB で、変数名、クラス、および値が表示されます。
a = struct with fields: field1: 7
MATLAB では、同様の表示機能をもつユーザー定義クラスが提供されています。ユーザー定義クラスでは、matlab.mixin.CustomDisplay
クラスで提供される API を使用して、MATLAB でクラスのオブジェクトが表示される方法をカスタマイズできます。この API を使用するには、クラスを matlab.mixin.CustomDisplay
から派生させます。
既定のオブジェクト表示
MATLAB は、disp
および display
という名前の独自のメソッドを実装しないすべての MATLAB クラスに、同名の既定のメソッド を追加します。これらのメソッドは表示されませんが、既定の簡易表示を作成します。
既定の簡易表示は、以下の部分で構成されています。
クラス名と、非スカラー配列の次元を表示するヘッダー。
クラスでの定義順に表示される、非表示ではないすべてのパブリック プロパティのリスト。
実際の表示は、オブジェクトがスカラーと非スカラーのいずれであるかによって異なります。また、削除されたオブジェクトや空のオブジェクト配列に対するスカラー ハンドル用の特殊な表示もあります。オブジェクトがプロパティをもたない場合、こうした状態のオブジェクトがすべて異なる形式で表示されます。
関数 details
は、既定の詳細表示を作成します。詳細表示では、簡易表示に以下の項目が追加されます。
完全修飾のクラス名を使用
handle
クラスへのリンク (オブジェクトがハンドルの場合)オブジェクトに対し実行される関数
methods
、events
、superclasses
へのリンク
MATLAB でのオブジェクトの表示例は、既定のオブジェクト表示をもつクラスを参照してください。
既定で表示されるプロパティ
MATLAB は、パブリックの getAccess をもつ、非表示に設定されていないオブジェクト プロパティを表示します (プロパティの属性を参照)。継承された抽象プロパティは表示から除外されます。表示されるオブジェクトがスカラーの場合、そのオブジェクトに付与されている動的プロパティがあれば、これも表示に含まれます。
CustomDisplay
クラス
matlab.mixin.CustomDisplay
クラスは、ユーザー クラスのオブジェクト表示のカスタマイズに使用できるインターフェイスを提供します。このインターフェイスを使用するには、ユーザー クラスを CustomDisplay
から派生させます。
classdef MyClass < matlab.mixin.CustomDisplay
CustomDisplay
クラスは HandleCompatible
であるため、値およびハンドルの両方のスーパークラスと組み合わせて使用できます。
メモ
matlab.mixin.CustomDisplay
を使用して列挙クラス用のカスタム表示を導出することはできません。
disp
、display
、および details
CustomDisplay
インターフェイスでは、disp
、display
および details
をオーバーライドできません。代わりに、この目的で定義されたカスタマイズ メソッドの任意の組み合わせをオーバーライドします。
オブジェクト表示をカスタマイズするメソッド
ユーザー クラスのオブジェクト表示をカスタマイズするために使用するメソッドのグループが 2 つあります。
"パーツ ビルダー メソッド" は標準表示に使用される文字列を作成します。表示の各部分を変更するには、これらのメソッドのいずれかをオーバーライドします。
"状態ハンドラー メソッド" は、スカラーや非スカラーなど、特定状態のオブジェクトに対して呼び出されます。ある特定状態のオブジェクトを扱うには、これらのメソッドのいずれかをオーバーライドします。
これらすべてのメソッドへのアクセスは保護されており、CustomDisplay
のサブクラスで protected として定義しなければなりません ( Access = protected
)。
オブジェクト表示の構成部分
標準オブジェクト表示は、ヘッダー、プロパティ リスト、フッターの 3 つの部分で構成されています。
たとえば、次に示すのは containers.Map
の標準オブジェクト表示です。
既定のオブジェクト表示にフッターは含まれていません。詳細表示ではさらに多くの情報が提示されます。
オブジェクトを返す未完了のステートメント、または disp
や display
の呼び出しのように、式の結果が MATLAB のコマンド ウィンドウにオブジェクトとして表示される際のオブジェクトの表示方法をカスタマイズできます。details
をオブジェクトまたはオブジェクト配列で呼び出した際に表示される結果は、CustomDisplay
API によって変更されません。
パーツ ビルダー メソッド
オブジェクト表示の各部分には、表示の各部分を組み立てるメソッドが関連付けられています。
メソッド | 目的 | 既定 |
---|---|---|
| ヘッダーに使用するテキストを作成する。 | クラス名をヘルプのポップアップにリンクする |
| 順序、値、グループ化などを含め、表示するプロパティとその表示方法を定義する。 | プロパティの表示方法を決定する |
| フッターに使用するテキストを作成する。 | 以下の 2 種類のフッターがあります。
|
表示に影響するオブジェクトの状態
MATLAB でのオブジェクト表示方法に影響するオブジェクトの状態は 4 つあります。
有効なスカラー オブジェクト
非スカラー オブジェクト配列
空のオブジェクト配列
削除されたオブジェクトへのスカラー ハンドル
状態ハンドラー メソッド
それぞれのオブジェクトの状態には、その特定状態にあるオブジェクトを表示するときに MATLAB が呼び出すメソッドが関連付けられています。
状態ハンドラー メソッド | 呼び出し対象のオブジェクトの状態 |
---|---|
displayScalarObject |
|
displayNonScalarObject |
|
displayEmptyObject |
|
displayScalarHandleToDeletedObject |
|
ユーティリティ メソッド
CustomDisplay
クラスは、各種表示オプションのさまざまな部分で使用される文字列を返すユーティリティ メソッドを提供します。これら静的メソッドの返すテキストにより、カスタマイズされたオブジェクト表示の作成は簡略化されます。
コンピューターの表示がハイパーテキストのリンクをサポートしない場合、文字列はリンクなしで返されます。
メソッド | 入力 | 出力 |
---|---|---|
有効なオブジェクトの配列 |
| |
配列 | 定義されたタイトルとプロパティ グループを表示する | |
オブジェクト | オブジェクトのドキュメンテーションにリンクされた単純なクラス名 | |
なし | 削除されたハンドルのドキュメンテーションにリンクされたテキスト | |
オブジェクト | フレーズ | |
オブジェクト | リンク付きのクラス名、ハンドル ページへのリンク (ハンドル クラスの場合) および | |
なし | ハンドル オブジェクトを説明するドキュメンテーションの節にリンクされたテキスト | |
オブジェクト | リンク付きのクラス名とフレーズ |