オブジェクトのプロパティやメソッドに動的にアクセスする方法はありますか?

Cachéでは、各種関数を提供しています。詳細は以下ドキュメントをご参照ください。
オブジェクトへの動的アクセスについて

SAMPLESネームスペースのSample.Personを使用して、利用例をご紹介します。

(1) クラス名の取得:$CLASSNAME(インスタンス)

SAMPLES>set p=##class(Sample.Person).%OpenId(1)
SAMPLES>write $CLASSNAME(p)
Sample.Person
SAMPLES>write $CLASSNAME(p.Home)  // オブジェクト参照のプロパティ
Sample.Address
SAMPLES>


(2) クラスメソッドの実行:$CLASSMETHOD(クラス名,クラスメソッド名,メソッドの引数1,引数n)

SAMPLES>write $classmethod("Sample.Person","CurrentAge",+$H-3652)
10


(3) インスタンスメソッドの実行:$METHOD(インスタンス,メソッド名,メソッドの引数1,引数n)

SAMPLES>do $method(p,"PrintPerson")  // 変数pには、Sample.Personのインスタンスが格納されているとします
Name: Yoders,Roberta J.
SAMPLES>



(4) クラスパラメータの設定値取得:$PARAMETER(クラス名,パラメータ名)

SAMPLES>write $PARAMETER("Sample.Person","EXTENTQUERYSPEC")
Name,SSN,Home.City,Home.State
SAMPLES>


(5) プロパティ値の操作

SAMPLES>write $property(p,"Name")
Yoders,Roberta J.
SAMPLES>set $property(p,"Name")="山田太郎"

SAMPLES>write $property(p,"Name")
山田太郎
SAMPLES>

関連トピック:
添付ファイル:

アンケートにご協力をお願いします
このトピックは参考になりましたか?
このトピックに関するお問い合わせ

FAQトップに戻る