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

オブジェクトに対する一般的な処理をサポートする各種関数を提供しています。詳細は以下ドキュメントをご参照ください。
オブジェクトへの動的アクセス【IRIS】
オブジェクトへの動的アクセス

サンプルクラス(Sample.Person)を使用して、利用例をご紹介します。

【InterSystems IRIS でご確認いただく場合】
InterSystems IRISでは、サンプル定義の一部を GitHub 上に公開しています。
ダウンロード情報やインポート、データ作成手順については、関連トピックをご参照ください 。

【Caché/Ensemble/HealthShare でご確認いただく場合】
SAMPLES ネームスペースへ移動してご確認ください。

(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>

該当する製品: Caché, Ensemble, HealthShare/Caché Based, IRIS Data Platform, HealthShare/IRIS Based, IRIS for Health
関連トピック: サンプル(Sample.Person)のクラス定義ダウンロードとサンプルデータの作成について
添付ファイル:

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

FAQトップに戻る