Main Content

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

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

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

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

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

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

  • matlab.metadata.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 はオブジェクトを出力引数として返す必要はありません。

matlab.metadata.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 メソッドから他の関数を呼び出して、その関数からプロパティ値にアクセスすることはできません。

関連するトピック