第九章 Caché 函数大全 $CLASSNAME 函数
返回类的名称。
大纲
$CLASSNAME(n)
参数
- n 可选-对类实例的对象引用(OREF)。如果省略,则返回当前类的类名。
描述
$CLASSNAME
返回类的名称。通常,它接受对象引用(OREF)并返回相应的类名。不带参数的$CLASSNAME
返回当前类的名称。$CLASSNAME
始终返回完整的类名(例如,%SQL.Statement
),而不是省略包名的类名的简短版本(例如,STATEMENT
)。
$CLASSNAME
在功能上等同于%Library.Base
超类的%ClassName(1)
方法。$CLASSNAME
函数在返回完整类名方面比%ClassName(1)
方法提供更好的性能。要返回类名称的简短版本,可以使用%ClassName()
或%ClassName(0)
。
示例
下面的示例创建一个类的实例。$CLASSNAME
获取实例OREF并返回相应的类名:
/// d ##class(PHA.TEST.Function).CLASSNAME()
ClassMethod CLASSNAME()
{
SET dynoref = ##class(%SQL.Statement).%New()
WRITE "instance class name: ",$CLASSNAME(dynoref)
}
DHC-APP>d ##class(PHA.TEST.Function).CLASSNAME()
instance class name: %SQL.Statement
在下面的示例中,不带参数的$CLASSNAME
返回当前类上下文的类名。在本例中,它是DocBook.Utils
类。这与$this
特殊变量中包含的类名相同:
/// d ##class(PHA.TEST.Function).CLASSNAME1()
ClassMethod CLASSNAME1()
{
WRITE "class context: ",$CLASSNAME(),!
WRITE "class context: ",$THIS
}
DHC-APP>d ##class(PHA.TEST.Function).CLASSNAME1()
class context: PHA.TEST.Function
class context: PHA.TEST.Function
以下示例显示$CLASSNAME
函数和%ClassName(1)
方法返回相同的值。它还显示了使用%ClassName()
方法(不带参数或带0参数)返回类名称的简短版本:
/// d ##class(PHA.TEST.Function).CLASSNAME2()
ClassMethod CLASSNAME2()
{
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()
}
DHC-APP>d ##class(PHA.TEST.Function).CLASSNAME2()
current full class name: PHA.TEST.Function
current full class name: PHA.TEST.Function
current short class name: Function
current short class name: Function
oref full class name: %SQL.Statement
oref full class name: %SQL.Statement
oref short class name: Statement
oref short class name: Statement
网友评论