Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

$CLASSNAME

クラス名を返します。

Synopsis

$CLASSNAME(n)

パラメータ

n オプション — クラス・インスタンスへのオブジェクト参照 (OREF)。省略した場合は、現在のクラスの名前が返されます。

説明

$CLASSNAME はクラス名を返します。一般的には、オブジェクト参照 (OREF) を取得して、対応するクラス名を返します。引数なしの $CLASSNAME は、現在のクラスの名前を返します。$CLASSNAME は常に完全なクラス名 (%SQL.Statement など) を返し、パッケージ名を省略した短縮版のクラス名 (Statement など) は返しません。

$CLASSNAME は、機能的には %Library.BaseOpens in a new tab スーパークラスの %ClassName(1)Opens in a new tab メソッドと同等です。$CLASSNAME 関数は、完全なクラス名を返す点で %ClassName(1) よりもパフォーマンスが優れています。短縮版のクラス名を返すには、%ClassName() もしくは %ClassName(0) のいずれかを使用することができます。

OREF の詳細は、"Caché オブジェクトの使用法" の “OREF の基本” を参照してください。

以下の例は、クラスのインスタンスを作成します。$CLASSNAME は、OREF インスタンスを取り、対応するクラス名を返します。

   SET dynoref = ##class(%SQL.Statement).%New()
   WRITE "instance class name: ",$CLASSNAME(dynoref)

以下は、パラメータの指定なしの $CLASSNAME で現在のクラス・コンテキストのクラス名を返す例です。この例では、DocBook.Utils クラスです。これは、$THIS 特殊変数に含まれるクラス名と同じです。

   WRITE "class context: ",$CLASSNAME(),!
   WRITE "class context: ",$THIS

以下の例では、$CLASSNAME 関数および %ClassName(1) メソッドが同じ値を返すことを示しています。また、%ClassName() メソッドを (引数なし、もしくは引数 0 で) 使用して、短縮版のクラス名を返すことも示しています。

CurrentClass
   WRITE "current full class name: ",$CLASSNAME(),!
   WRITE "current full class name: ",..%ClassName(1),!
   WRITE "current short class name: ",..%ClassName(0),!
   WRITE "current short class name: ",..%ClassName(),!!
ClassInstance
   SET x = ##class(%SQL.Statement).%New()
   WRITE "oref full class name: ",$CLASSNAME(x),!
   WRITE "oref full class name: ",x.%ClassName(1),!
   WRITE "oref short class name: ",x.%ClassName(0),!
   WRITE "oref short class name: ",x.%ClassName()

関連項目

FeedbackOpens in a new tab