記事
· 2022年3月1日 2m read

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

これは、InterSystems FAQサイトの記事です。

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


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

【InterSystems IRIS でご確認いただく場合】
InterSystems IRISでは、サンプル定義の一部を GitHub 上に公開しています。
ダウンロード情報やインポート、データ作成手順については、下記の記事をご参照ください 。
サンプル(Sample.Person)のクラス定義ダウンロードとサンプルデータの作成について

【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>
ディスカッション (0)1
続けるにはログインするか新規登録を行ってください