ObjectScript 函数ObjectScript 提供以下与对象类一起使用的函数:
$CLASSMETHOD 使能够运行类方法,以类名和方法名的形式给出。例如:TESTNAMESPACE>set class="Sample.Person"
TESTNAMESPACE>set obj=$CLASSMETHOD(class,"%OpenId",1)
TESTNAMESPACE>w obj.Name
Van De Griek,Charlotte M.
当需要编写执行类方法的通用代码,但事先不知道类名(甚至方法名)时,此函数非常有用。例如:
//read name of class from imported document
Set class=$list(headerElement,1)
// create header object
Set headerObj=$classmethod(class,"%New")
其他功能在类似场景中也很有用。
$METHOD 使能够在给定实例和方法名称的情况下运行实例方法。例如:TESTNAMESPACE>set obj=##class(Sample.Person).%OpenId(1)
TESTNAMESPACE>do $METHOD(obj,"PrintPerson")
Name: Van De Griek,Charlotte M.
$PROPERTY 获取或设置给定实例的给定属性的值。例如:TESTNAMESPACE>set obj=##class(Sample.Person).%OpenId(2)
TESTNAMESPACE>write $property(obj,"Name")
Edison,Patrick J.
$PARAMETER 在给定实例的情况下获取给定类参数的值。例如:TESTNAMESPACE>set obj=##class(Sample.Person).%OpenId(2)
TESTNAMESPACE>write $parameter(obj,"EXTENTQUERYSPEC")
Name,SSN,Home.City,Home.State
$CLASSNAME 返回给定实例的类名。例如:TESTNAMESPACE>set obj=##class(Sample.Person).%OpenId(1)
TESTNAMESPACE>write $CLASSNAME(obj)
Sample.Person
如果没有参数,该函数返回当前上下文的类名。这在实例方法中很有用。