ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

動的プロパティの Set メソッドおよび Get メソッド

追加のクラス メソッドを作成せずに、動的プロパティの set アクセス メソッドまたは get アクセス メソッドを定義できます。アクセス メソッドの使用に関する一般的な情報については、プロパティ アクセス メソッドを参照してください。

動的プロパティのアクセス メソッドの作成

以下の手順に従って、プロパティのアクセス メソッドを作成します。

  • プロパティの設定または取得が行われる前に実行する操作を実装する関数を定義します。これらのメソッドは、以下のシグネチャをもたなければなりません。mySet(obj,val) または val = myGet(obj)

  • 動的プロパティの対応する meta.DynamicProperty オブジェクトを取得します。

  • meta.DynamicProperty オブジェクトの GetMethod または SetMethod プロパティに、set または get プロパティ関数を参照する関数ハンドルを代入します。この関数は、クラスのメソッドである必要はありません。set.PropertyName のような命名規則は使用できません。代わりに、他の有効な関数名を使用します。

動的プロパティの定義で作成した button クラスの myCoord 動的プロパティに対して、プロパティの関数 set を作成するとします。

以下のように関数を記述します。

function set_myCoord(obj,val)
   if  ~(length(val) == 2) 
      error('myCoords require two values')
   end
   obj.myCoord = val; 
end 

buttonhandle クラスであるので、プロパティの関数 set はオブジェクトを出力引数として返す必要はありません。

meta.DynamicProperty オブジェクトを取得するには、handle クラスのメソッド findprop を使用します。

mb1 = b1.findprop('myCoord');
mb1.SetMethod = @set_myCoord;

このプロパティを設定する際、MATLAB® はプロパティの関数 set を必ず呼び出します。

b1.myCoord = [1 2 3] % length must be two
Error using button.set_myCoord
myCoords require two values

プロパティ アクセス メソッド内からに限り、プロパティ値の設定、取得が可能です。set または get メソッドから他の関数を呼び出して、その関数からプロパティ値にアクセスすることはできません。

set メソッドと get メソッドの共有

同じ関数ハンドルを、複数の動的プロパティの set メソッドまたは get メソッドに割り当てることができます。MATLAB は割り当てられた関数 set にオブジェクトと値のみを渡します。

プロパティの set メソッドまたは get メソッド内からそのプロパティへの参照や代入を行っても、set メソッドまたは get メソッドが再度呼び出されることはありません。そのため、複数の動的プロパティに対して同じ関数のハンドルを使用した場合、その関数内からそれらプロパティのいずれかにアクセスしても、その関数は呼び出されません。

関連するトピック