投稿者

Developer at Paltac Corporation
質問 Yuji Ohata · 3月 29, 2021

ObjectScriptの変数の型検知について。

こんにちは、皆さま。
業務でIRISを用いて開発を行っている者です。

ObjectScriptでは様々な型の変数定義が可能ですが、
実際に定義された変数(Object)から、その変数の型を逆引きする方法を
ご存じな方はいらっしゃいませんでしょうか?

理想としては、Java等で利用可能な『instanceof』演算子の
代替えとなるような仕組みが望ましいです。

力技で何とかなりそうなら、専用のメソッドみたいなものを
自作で作ってもよいかなとは考えておりますが、
現状その力技すら思いついていない状況です。。。

何か情報をお持ちの方がいらしたら、助言いただけますと幸いです。

製品版: IRIS 2020.1

Comments

Toshihiko Minamoto · 3月 29, 2021

Ohataさん
こんにちは。
型(クラス名)を取得するには$classname()関数を使用したり、%ClassName()メソッドを使用します。
例えば、
USER> set a=##class(Sample.Person).%OpenId(1)
でaというインスタンスを作成した場合、
USER>write $classname(a)
Sample.Person
USER>write a.%ClassName(1)
Sample.Person
とクラス名が文字列で返ります。
 

0
Yuji Ohata  3月 29, 2021 to Toshihiko Minamoto

Minamoto さん

早々にコメントいただきありがとうございます!

頂いた内容で、やりたかったことが対応できそうです。

0
Toshihiko Minamoto  3月 29, 2021 to Yuji Ohata

Ohataさん

すみません、instanceof と同等のメソッドとして、%IsA()メソッドがあります。これは、インスタンスがパラメータに指定されたクラスまたはそのサブクラスかどうかをチェックするものです。
USER>write a.%IsA("Sample.Person")
1
よろしくお願いします。

0
Yuji Ohata · 3月 29, 2021

Minamoto さん

情報ありがとうございます!

RegisteredObjectにそんな便利APIがあったんですね。

まさに利用したいAPIはそちらでしたので、利用させていただきます!

0