このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
プロパティ の set メソッド
プロパティ アクセス メソッドの概要
プロパティ アクセス メソッドの概要は、プロパティ アクセス メソッドを参照してください。
プロパティの set メソッドの構文
MATLAB® はプロパティに値が代入されるたびにプロパティの set メソッドを呼び出します。
メモ
プロパティ アクセス メソッドを直接呼び出すことはできません。MATLAB は、プロパティ値にアクセスするときにこれらのメソッドを呼び出します。
プロパティの set メソッドは、次の構文をもちます。ここで、PropertyName
はプロパティの名前です。
値クラスの場合:
methods function obj = set.PropertyName(obj,value) ... end
obj
— 値が代入されるプロパティをもつオブジェクトvalue
— プロパティに代入される新しい値。
値クラスの関数 set は、変更されたオブジェクトを呼び出し元の関数に返さなければなりません。ハンドル クラスは、変更されたオブジェクトを返す必要はありません。
ハンドル クラスの場合:
methods function set.PropertyName(obj,value) ... end
プロパティの set メソッドで既定のメソッド属性を使用します。set メソッドを定義している methods ブロックは属性を指定できません。
プロパティに設定する値の検証
プロパティの set メソッドを使用して、プロパティに代入される値を検証します。プロパティの set メソッドは、新しいプロパティ値の保存に必要な動作の前に、入力値のエラー チェックのようなアクションを実行できます。
classdef MyClass properties Prop1 end methods function obj = set.Prop1(obj,value) if (value > 0) obj.Prop1 = value; else error('Property value must be positive') end end end end
プロパティの set メソッドの例は、プロパティ値を特定値に制限を参照してください。
set メソッドを呼び出す場合
プロパティの set メソッドが存在する場合、MATLAB は値がそのプロパティに代入されるたびにメソッドを呼び出します。ただし、次の場合にはプロパティの set メソッドは呼び出されません。
プロパティ自体の set メソッドからプロパティに値を代入する場合。これは、set メソッドの再帰呼び出しを防ぐためです。ただし、set メソッドによって呼び出された関数から行われるプロパティの代入では、set メソッドが呼び出されます。
オブジェクトの初期化中、オブジェクト コンストラクター関数を呼び出す前に、MATLAB がプロパティに既定値を代入する場合。
MATLAB が値オブジェクト (つまり、
handle
でない任意のオブジェクト) をコピーする場合、MATLAB は、あるオブジェクトから別のオブジェクトにプロパティ値をコピーするときに set または get メソッドを呼び出しません。プロパティの
AbortSet
属性がtrue
のときに、現在値と同じプロパティ値を代入する場合。この属性の詳細については、プロパティ値が変化しない場合の代入を参照してください。
コンストラクターでのプロパティ値の設定
コンストラクターでプロパティ値を設定すると、プロパティ set メソッドが呼び出されます。たとえば、PropertySetMethod
クラスは Prop1
プロパティのプロパティ set メソッドを定義します。
classdef PropertySetMethod properties Prop1 = "Default String" end methods function obj = PropertySetMethod( str ) if nargin > 0 obj.Prop1 = str; end end function obj = set.Prop1(obj,str) obj.Prop1 = str; fprintf( 'set.Prop1 method called. Prop1 = %s\n', obj.Prop1 ); end end end
入力引数なしでクラス コンストラクターを呼び出すと、MATLAB は set.Prop1
メソッドを呼び出しません。
>> o = PropertySetMethod
o = PropertySetMethod with properties: Prop1: "Default String"
コンストラクターでプロパティ値を設定すると、プロパティ set メソッドが呼び出されます。
>> o = PropertySetMethod("New string")
set.Prop1 method called. Prop1 = New string o = PropertySetMethod with properties: Prop1: "New string"
オブジェクトを別の変数にコピーすると、代入の右辺のオブジェクトでプロパティに既定以外の値が使われていても、MATLAB はプロパティ set メソッドを呼び出しません。
a = o; a.Prop1
a.Prop1 ans = "New String"